tencent cloud

フィードバック

最終更新日:2023-10-26 17:31:32

    サーバーでのビデオアップロードのシナリオを実現させるために、VODではGo SDKを提供しています。アップロードのフローは、サーバーからのアップロードガイドをご参照ください。

    統合方式

    go getを使用してインポート

    go get -u github.com/tencentcloud/tencentcloud-sdk-go
    go get -u github.com/tencentyun/cos-go-sdk-v5
    go get -u github.com/tencentyun/vod-go-sdk
    

    ソースコードパッケージによるインストール

    プロジェクトの中にソースコードを直接インポートする必要がある場合は、ソースコードを直接ダウンロードしてプロジェクトにインポートし、使用することができます。

    シンプルビデオアップロード

    アップロードオブジェクトの初期化

    Tencent Cloud APIキーを使用して、VodUploadClientインスタンスを初期化します。

    import (
        "github.com/tencentyun/vod-go-sdk"
    )
    
    client := &vod.VodUploadClient{}
    client.SecretId = "your secretId"
    client.SecretKey = "your secretKey"
    

    アップロードリクエストのオブジェクト作成

    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
    )
    
    req := vod.NewVodUploadRequest()
    req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
    

    アップロードの呼び出し

    アップロードメソッドを呼び出し、アクセスポイントリージョンおよびアップロードリクエストを渡します。

    rsp, err := client.Upload("ap-guangzhou", req)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(*rsp.Response.FileId)
    fmt.Println(*rsp.Response.MediaUrl)
    
    説明:

    アップロード方法は、ファイルのサイズに応じて、通常アップロードとマルチパートアップロードが自動的に選択されます。マルチパートアップロードの各手順を気にすることなく、マルチパートアップロードを行うことができます。

    高度な機能

    カバーの付加

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "your secretId"
        client.SecretKey = "your secretKey"
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
        req.CoverFilePath = common.StringPtr("/data/video/Wildlife-cover.png")
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
        fmt.Println(*rsp.Response.CoverUrl)
    }
    

    タスクフローの指定

    まず、タスクフローテンプレートの作成、およびテンプレートに対する命名を行います。タスクフロー時に、このタスクフローテンプレート名を使用してProcedureパラメータを設定すれば、アップロード成功後、タスクフローを自動的に実行することができます。

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "your secretId"
        client.SecretKey = "your secretKey"
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
        req.Procedure = common.StringPtr("Your Proceducre Name")
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
    }
    

    サブアプリケーションのアップロード

    サブアプリケーションIDを渡します。アップロード成功後、リソースは具体的なサブアプリケーションにのみ属します。

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "your secretId"
        client.SecretKey = "your secretKey"
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
        req.SubAppId = common.Uint64Ptr(101)
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
    }
    

    ストレージリージョンの指定

    コンソールで目標ストレージリージョンがアクティブ化されているか確認します。アクティブ化されていない場合は、アップロードストレージ設定をご参照ください。最後に、StorageRegionの属性によって、ストレージリージョンの 英語の略称を設定します。

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "your secretId"
        client.SecretKey = "your secretKey"
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
        req.StorageRegion = common.StringPtr("ap-chongqing")
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
    }
    

    パート同時実行数の指定

    パート同時実行数は、大きなファイルに対応するもので、複数のパートに分割すると同時にアップロードするものです。パート同時アップロードのメリットは、1個のファイルのアップロードを素早く完了させられることで、SDKはファイルのサイズを基に、通常アップロードとパートアップロードを自動的に選択します。ユーザーは、パートアップロードの各手順に気を遣う必要もなく、パートでのアップロードを実現できます。こうしてファイルの同時パート数は、ConcurrentUploadNumberパラメータによって指定します。

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "your secretId"
        client.SecretKey = "your secretKey"
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
        req.ConcurrentUploadNumber = common.Uint64Ptr(5)
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
    }
    

    一時的な証明書の使用によるアップロード

    一時的な証明書の関連キー情報を渡し、一時的な証明書を使用して身分を検証し、アップロードします。

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "Credentials TmpSecretId"
        client.SecretKey = "Credentials TmpSecretKey"
        client.Token = "Credentials Token"
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
    }
    

    アップロードのプロキシ設定

    アップロードのプロキシ設定では、関係するプロトコルおよびデータはいずれもプロキシ経由で処理します。開発者はプロキシを参照しながら、ファイルを自社インターネットからテンセントクラウドにアップロードします。

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
        "net/http"
        "net/url"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "your secretId"
        client.SecretKey = "your secretKey"
        proxyUrl, _ := url.Parse("your proxy url")
        client.Transport = &http.Transport{
            Proxy: http.ProxyURL(proxyUrl),
        }
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
    }
    

    アダプティブビットレートストリーミング(ABS)ファイルのアップロード

    このSDKでアップロードをサポートするABS形式のパッケージにはHLSとDASHがあります。manifest(M3U8またはMPD)で引用するメディアファイルは、必ず相対パスとし(URLおよび絶対パスは不可)、同時にmanifestと同じクラスのディレクトリまたは下の階層のディレクトリに置く必要があります(../は使用不可)。SDKのアップロードインターフェースを呼び出す時に、MediaFilePathパラメータにmanifest を入力すると、SDKが関連するメディアファイルリストを解析し、一緒にアップロードされます。

    package main
    
    import (
        "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
        "github.com/tencentyun/vod-go-sdk"
        "fmt"
    )
    
    func main() {
        client := &vod.VodUploadClient{}
        client.SecretId = "your secretId"
        client.SecretKey = "your secretKey"
        
        req := vod.NewVodUploadRequest()
        req.MediaFilePath = common.StringPtr("/data/video/prog_index.m3u8")
        
        rsp, err := client.Upload("ap-guangzhou", req)
        if err != nil {
            fmt.Println(err)
            return
        }
        fmt.Println(*rsp.Response.FileId)
        fmt.Println(*rsp.Response.MediaUrl)
        fmt.Println(*rsp.Response.CoverUrl)
    }
    

    インターフェースの説明

    アップロードクライアントクラスVodUploadClient

    属性名 属性説明 タイプ 入力必須
    SecretId Tencent Cloud APIキーID。 String はい
    SecretKey Tencent Cloud API Key。 String はい

    アップロードリクエストクラスVodUploadRequest

    属性名 属性説明 タイプ            入力必須
    MediaFilePath アップロード予定のメディアファイルパス。ローカルパスにする必要があります。URLはサポートしていません。 Stringポインタ はい
    SubAppId VOD サブアプリケーションID。サブアプリケーションの中のリソースにアクセスしたい場合は、このフィールドにサブアプリケーションIDを入力します。アクセスしない場合、この項目は入力不要です。 uint64ポインタ いいえ
    MediaType アップロード予定のメディアファイルタイプ。選択可能なタイプの詳細は、メディアアップロードの概要をご参照ください。MediaFilePathに拡張子が付いている場合は入力不要です。 Stringポインタ いいえ
    MediaName アップロード後のメディアの名前。入力しない場合は、デフォルトでMediaFilePathのファイル名を採用します。 Stringポインタ いいえ
    CoverFilePath アップロード予定のカバーファイルパス。ローカルパスにする必要があります。URLはサポートしていません。 Stringポインタ いいえ
    CoverType アップロード予定のカバーファイルタイプ。選択可能なタイプの詳細は、メディアアップロードの概要をご参照ください。CoverFilePathに拡張子が付いている場合は入力不要です。 Stringポインタ いいえ
    Procedure アップロード後に自動的に実行させたいタスクフロー名。このパラメータは、タスクフローの作成(API方式 またはコンソール方式)時にユーザーが指定します。具体的な内容は、タスクフロー概要をご参照ください。 Stringポインタ いいえ
    ExpireTime メディアファイルの期限。表記形式はISO 8601規格に準拠します。詳細については、ISO日時表記形式の説明をご参照ください。 Stringポインタ いいえ
    ClassId カテゴリーID。メディアのカテゴリー管理に使用します。カテゴリー作成 インターフェースによってカテゴリーを作成し、カテゴリーIDを取得することができます。 int64ポインタ いいえ
    SourceContext ソースコンテキスト。ユーザーリクエスト情報のパススルーに使用します。アップロードコールバックインターフェースは、このフィールドの値を戻します。最長250文字。 Stringポインタ いいえ
    StorageRegion ストレージリージョン。ストレージを予定/希望するリージョンを指定します。このフィールドにはストレージリージョンの英語の略称を入力します。 Stringポインタ いいえ
    ConcurrentUploadNumber パート同時実行数。大きなファイルを対象にパートアップロードする時に有効となります。 Integer いいえ

    アップロードレスポンスクラス VodUploadResponse

    属性名 属性説明 タイプ
    Response アップロードの結果情報を戻します。 struct
    Response.FileId メディアファイルの一意の標識。 String ポインタ
    Response.MediaUrl メディア再生アドレス。 String ポインタ
    Response.CoverUrl メディアカバーアドレス。 String ポインタ
    Response.RequestId 一時的なリクエストID。リクエストごとに返されます。問題を特定する時はその回のリクエストのRequestIdを提供する必要があります。 Stringポインタ

    アップロードメソッド VodUploadClient.Upload(region string, request *VodUploadRequest)

    パラメータ名 パラメータの説明 タイプ 入力必須
    region アクセスポイントリージョン。どのリージョンのVODサーバーにリクエストするかであり、ストレージリージョンとは異なります。具体的な内容は、サポートするリージョンリストをご参照ください。 String はい
    request アップロードリクエスト。 VodUploadRequest ポインタ はい

    エラーコードリスト

    ステータスコード 意味
    InternalError 内部エラー。
    InvalidParameter.ExpireTime パラメータ値のエラー:期限。
    InvalidParameterValue.CoverType パラメータ値のエラー:カバーのタイプ。
    InvalidParameterValue.MediaType パラメータ値のエラー:メディアタイプ。
    InvalidParameterValue.SubAppId パラメータ値のエラー:サブアプリケーションID。
    InvalidParameterValue.VodSessionKey パラメータ値のエラー:VODセッション。
    ResourceNotFound リソースがありません。
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)