サポート サポートへのお問い合わせ | システムステータス システムステータス
ページコンテンツ

    複数のオーディオトラックの実装

    このトピックでは、Dynamic Ingest および CMS API を使用して、ビデオの複数のオーディオトラックを追加および管理する方法について説明します。

    はじめに

    複数のオーディオトラックを 1 つのタイトルに関連付ける機能は、いくつかの重要なシナリオで役立ちます。

    • 同じビデオを異なる言語で再生し、グローバルに幅広いリーチに対応 
    • 視覚障害者の説明を音声で提供

    オーディオトラックの追加はStudioでも実行できることに注意してください。を参照してください。メディアモジュールを使用したビデオへのオーディオトラックの追加詳細については。

    サポートされているビデオ形式

    複数のオーディオトラックがサポートされていますHLS V4+そしてDASH -ありとなしDRM保護。

    サンプル

    以下は、複数のオーディオトラックを含むビデオの簡単な例です。

    セットアップ

    のセットアップDynamic Ingestビデオ、画像、オーディオトラックを取り込んでいるかどうかに関係なく、リクエストは同じです。WebVTTファイル、またはこれらすべて:

    URL をリクエスト
          https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
    認証
    認証には、BearerAuthorizationアクセストークンをトークンとしてヘッダーに渡す必要があります。
          Authorization: Bearer {access_token}

    アクセストークンを取得するには、次のものが必要になりますクライアントの資格情報(下記参照)。アクセストークンを取得するプロセスについては、を参照してください。アクセストークンを取得する

    S3 に関する注意

    ソースファイルが保護されたS3バケットからプルされる場合は、バケットポリシーを設定して許可する必要がありますVideo Cloudファイルにアクセスします。見る使用するDynamic Ingest S3で詳細については。

    認証情報の取得

    client_idとを取得するにはclient_secret、OAuth UI に移動してこのアプリを登録する必要があります。

    必要な権限は次のとおりです。

    動的取り込み権限
    Dynamic Ingestパーミッション

    を介して資格情報を取得することもできますCURLまたはPostman - 見る:

    API から直接認証情報を取得する場合は、次の権限が必要です。

          [
            "video-cloud/video/all",
            "video-cloud/ingest-profiles/profile/read",
            "video-cloud/ingest-profiles/account/read",
            "video-cloud/upload-urls/read"
          ]

    ワークフロー

    2つの主な使用例があります。

    • 複数のオーディオトラックを含む新しいビデオを取り込む
      新しいビデオワークフロー
      新しいビデオワークフロー
    • 既存のビデオに複数のオーディオトラックを追加する
      既存のビデオワークフロー
      既存のビデオワークフロー

    以下のセクションでAPIリクエストの詳細を見ていきます。

    オーディオトラックのメタデータ

    オーディオトラックに添付されたメタデータフィールドがいくつかあります-これらのいくつかはトラックを取り込むときに設定されますが、他はによって作成されますVideo Cloud。これらのフィールドの一部は読み取り専用であり、その他はユーザーが更新できます。メタデータフィールドについては、関連するAPIリクエストのコンテキストで以下で詳しく説明しますが、Brightcove Playerが複数のオーディオトラックを処理する方法を決定する上で重要であるため、2つの特定のフィールドについてここで説明する必要があります。

    language

    ザ・language取り込み中に各トラックに設定されるフィールドは、トラックの言語を指定します。トラックがビデオ内の話し言葉のダブである場合、これは重要です。このフィールドの値は、次のような2文字のコードになります。enまたはhi。言語コードの完全なリストについては、Subtagの値http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

    variant

    ザ・variantフィールドは、オーディオトラックの種類を示します。標準的な意味を持つ可能な値は次のとおりです。

    • main -メイントラック、通常はビデオファイルに多重化されたトラック
    • alternate -代替オーディオトラック
    • commentary -ビデオトラックの解説を提供するオーディオトラック
    • dub -別の言語で話された単語のダビングされたバージョンを含むトラック
    • descriptive -トラックは何らかの方法でビデオコンテンツを説明しています

    アカウントのデフォルト

    アカウントのデフォルトを設定できますlanguageそしてvariant Brightcove Playerによってデフォルトとして扱われるオーディオトラックを決定します(以下のセクションで説明するように、トラックのメタデータを更新することでデフォルトをオーバーライドすることもできます)。アカウントのデフォルトを設定するには、 Brightcoveサポートに連絡する

    オーディオトラックを取り込む

    次に、前述の2つのユースケースのオーディオトラックを取り込むためのAPI呼び出しについて説明します。

    複数のオーディオトラックを含む新しいビデオ

    ビデオオブジェクトを作成します(CMS API

    1. ビデオオブジェクトを作成するときに、ビデオメタデータのいくつかのアイテムを追加できますが、ここでは最小限のものを追加します。nameビデオの場合:
            {
                "name": "YOUR_VIDEO_NAME"
            }
    2. 上記のJSONを(プレースホルダーテキストを動画名に置き換えて)リクエスト本文として送信しますPOSTリクエストするhttps://cms.api.brightcove.com/v1/accounts/YOUR_ACCOUNT_ID/videos
    3. 応答で多くのビデオメタデータが返されますが、ここで重要なのはid(ビデオID)、次のステップに必要です。

    ビデオトラックとオーディオトラックを取り込む

    次に、ビデオトラックとオーディオトラックを取り込みます(画像やテキストトラックなどの他のアセットを追加することもできますが、ここでは単純にしておきます)。少し紛らわしいと思うかもしれませんが、audio_tracksリクエスト本文のJSONに2回表示されます。

    • アンaudio_tracks内のオブジェクトmasterオブジェクトには、ビデオファイルに含まれるオーディオトラックのメタデータが含まれます(存在する場合-これはオーディオの多重化とも呼ばれます)-オーディオトラックはすでにに含まれているため、これにはオーディオファイルのURLなしでメタデータのみが含まれますビデオファイル
    • トップレベルaudio_tracks取り込みている追加のオーディオトラックを説明するオブジェクト-これらには、オーディオファイルのURLとその他のメタデータが含まれます
    1. リクエスト本文で送信されるJSONデータは次のとおりです。
            {
              "master": {
                  "url": "https://learning-services-media.brightcove.com/videos/Great_Blue_Heron.mp4",
                  "audio_tracks": [
                      {
                          "language": "en",
                          "variant": "main"
                      }
                  ]
              },
              "audio_tracks": {
                  "merge_with_existing": true,
                  "masters": [
                      {
                          "url": "http://learning-services-media.brightcove.com/audio/celtic_lullaby.m4a",
                          "language": "en",
                          "variant": "alternate"
                      },
                      {
                          "url": "http://learning-services-media.brightcove.com/audio/audio1.m4a",
                          "language": "en",
                          "variant": "commentary"
                      }
                  ]
              },
                "profile": "BoltIngestProfile",
                "capture-images": true,
                "callbacks": [
                    "http://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
                ]
            }
    2. 上記のJSONを送信し、プレースホルダーを独自のURLに置き換えて、languageそしてvariant値、POSTリクエストするhttps://ingest.api.brightcove.com/v1/accounts/ACCOUNT_ID/videos/ID/ingest-requestsIDこれは、ビデオオブジェクトを作成するためのリクエストから返されたビデオIDです)

    既存のビデオにオーディオトラックを追加する

    既存のビデオにオーディオトラックを追加する場合、手順は同じですが、リクエストを行う必要がない点が異なります。CMS APIビデオはすでに存在するため、作成します。そして、へのリクエストでDynamic Ingest API、ビデオファイルまたはのURLを含める必要はありませんaudio_tracksmasterオーディオで多重化されたメタデータを提供します。ただし、既存のビデオのオーディオトラックに多重化されたメタデータを含める必要があります。したがって、取り込みリクエストのJSONは次のようになります。

          {
            "audio_tracks": {
                "merge_with_existing": true,
                "masters": [
                    {
                        "url": "http://learning-services-media.brightcove.com/audio/celtic_lullaby.m4a",
                        "language": "en",
                        "variant": "alternate"
                    },
                    {
                        "url": "http://learning-services-media.brightcove.com/audio/audio1.m4a",
                        "language": "en",
                        "variant": "commentary"
                    }
                ]
            },
              "profile": "BoltIngestProfile",
              "capture-images": true,
              "callbacks": [
                  "http://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
              ]
          }

    取り込み用のオーディオトラックフィールド

    オーディオトラックフィールド
    フィールド タイプ 説明
    master.audio_tracks オブジェクト [] オーディオで多重化されたメタデータ
    master.audio_tracks.language 文字列 のサブタグからの音声で多重化された言語コードhttp://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
    master.audio_tracks.variant 文字列 オーディオトラックの種類: main | | alternatedub | commentary | descriptive ( mainは一般的にオーディオで多重化されたものに使用されます)
    audio_tracks オブジェクト 追加のオーディオトラックに関する情報
    audio_tracks.merge_with_existing ブール値 これらのトラックを既存のトラックにマージするか、置き換えるか
    audio_tracks.masters オブジェクト [] 個々のオーディオトラックの情報
    audio_tracks.masters.url 文字列 オーディオトラックファイルのURL
    audio_tracks.masters.language 文字列 http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry のサブタグからのオーディオトラックの言語コード
    audio_tracks.masters.variant 文字列 オーディオトラックの種類: main | | alternatedub | commentary | descriptive ( mainは一般的にオーディオで多重化されたものに使用されます)

    通知

    1つ以上を指定した場合折り返し電話 URL(上記の取り込みリクエストのサンプルJSONのように)、Video Cloud取り込みたオーディオトラックごとに通知を送信します。通知は次のようになります。

          {
            "entity": "default/audio128",
            "entityType": "DYNAMIC_RENDITION",
            "version": "1",
            "action": "CREATE",
            "jobId": "0f703adb-0f17-4a35-8395-21c7fcdd2649",
            "videoId": "5298468208001",
            "dynamicRenditionId": "default/audio128",
            "accountId": "1910141565001",
            "status": "SUCCESS",
            "language" : "en",
            "variant" : "alternate"
          }

    オーディオトラックの通知を特定するには、languageそしてvariant通知のフィールド。ザ・"action": "CREATE"そして"status": "SUCCESS"フィールドは、トラックが正常に取り込まれたことを示します。

    オーディオトラックの管理

    オーディオトラックを取り込んだら、CMS API

    ビデオのすべてのオーディオトラックメタデータを取得する

    ビデオに関連付けられているすべてのオーディオトラックのメタデータを取得するには、GETリクエスト先:

          https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks

    応答は、各オーディオトラックのメタデータを含むオブジェクトの配列になります。詳細については、以下の回答フィールドの表を参照してください。

          [
            {
              "id": "en_alternate",
              "language": "en",
              "variant": "alternate",
              "duration": 86100,
              "encoding_rates": [
                64000,
                96000,
                127000
              ]
            },
            {
              "id": "en_commentary",
              "language": "en",
              "variant": "commentary",
              "duration": 34203,
              "encoding_rates": [
                10000,
                13000,
                15000
              ]
            },
            {
              "id": "en_main",
              "language": "en",
              "variant": "main",
              "duration": 31488,
              "encoding_rates": [
                62000,
                94000,
                125000
              ]
            }
          ]

    メディアモジュールのビデオを表示して、Studioでこの情報を表示することもできます。

    スタジオのオーディオトラック情報
    スタジオのオーディオトラック情報

    1つのオーディオトラックのメタデータを取得する

    ビデオに関連付けられた1つのオーディオトラックのメタデータを取得するには、GETリクエスト先:

          https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

    応答は、各オーディオトラックのメタデータを含むオブジェクトになります。詳細については、以下の回答フィールドの表を参照してください。

    オーディオトラックメタデータの更新

    オーディオトラックの書き込み可能なメタデータフィールドを更新するには、PATCHリクエスト先:

          https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

    リクエストの本文に、変更するフィールドを含めます(例:

          {
              "language": "es",
              "is_default": true
          }

    オーディオトラックを削除する

    オーディオトラックを削除するには、次の宛先にDELETEリクエストを送信します。

          https://cms.api.brightcove.com/v1/accounts/account_id/videos/video id/audio_tracks/audio_track_id

    削除プロセスは非同期であり、すぐに完了しない可能性があるため、成功応答コードは204(コンテンツなし)ではなく202(承認済み)になる可能性があることに注意してください。

    オーディオトラックメタデータフィールド
    フィールド タイプ 読み取り専用 説明
    id 文字列 はい として形成されたトラックのID language_variant -これらの値が変更されると、IDが変更される可能性があることに注意してください
    language 文字列 いいえ http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry のサブタグからのオーディオトラックの言語コード
    variant 文字列 いいえ オーディオトラックの種類: main | | alternatedub | commentary | descriptive ( mainは一般的にオーディオで多重化されたものに使用されます)
    duration 数値 はい ミリ秒単位のトラックの長さ
    encoding_rates 数[] はい このトラックで使用可能なエンコーディングのリスト(bps単位)
    is_default ブール値 いいえ trueの場合、これは再生のデフォルトトラックとして使用されます(アカウントレベルのデフォルトを上書きします)

    再生

    Brightcove WebおよびSDKプレーヤーが複数のオーディオトラックを処理する方法については、以下を参照してください。

    既知の問題

    オーディオマスターが保存されない
    • Video Cloud意志ないオーディオマスターを保存する
    • ビデオマスターからビデオを再トランスコードすると、追加のオーディオトラックが失われるため、を使用して再追加する必要があります。既存のビデオにオーディオトラックを追加する上記の方法
    オーディオのみのファイルを使用する必要があります
    オーディオトラックは、ビデオトラックを含まないオーディオ専用ファイルである必要があります
    HLSv3HLS同じセグメントにオーディオとビデオがあります
    • 再生APIは返されませんHLSv3マニフェスト
    • すべてHLSマニフェストには、デコードされたビデオ/オーディオが含まれます
    スムーズなストリーミング
    スムーズストリーミング URL は使用できません。
    社会的分布
    配信に使用するオーディオトラックを選択することはできません。ビデオソースに含まれるトラック(オーディオのマルチプレス)が常に使用されます。
    Studio
    • スタジオはオーディオトラックに関する情報を表示します
    • Studioを使用してオーディオトラックを追加するには、を参照してください。複数のオーディオトラック
    1 つの「デフォルト」トラックを超えるオーディオトラックの順序
    • CMS APIタイトルごとのデフォルトのオーディオトラックを選択するには、is_defaultフィールドをtrue
    • アカウントのデフォルトもあります。これはサポートで設定できます
    • これはHLSマニフェストの「デフォルト」トラックにのみ影響します
    • 他の注文はできません
    1 つのソースから複数のオーディオトラックを取り込み
    サポートのみ取り込んだソースごとに1つのオーディオトラック。各オーディオトラックは個別に取り込む必要があります。
    オーディオのみを含む動画の DRM 保護
    ビデオトラックが追加されるとすぐに、DRM 保護が有効になります。
    エンドユーザーにわかりやすいラベル
    オーディオトラックのカスタムラベルはサポートされていません。必要な場合は、Player API を使用してクライアント側で変更を行う必要があります。
    場合によっては、トラックを切り替えると Brightcove Player が不安定になる場合があります
    • すべてのオーディオセグメントがダウンロードされる前のトラック切り替え
    • Silverlight プラグインを使用してビデオを再生する場合 (10 未満のバージョンの IE、または 8 未満のバージョンの Window の IE のバージョン)-複数のオーディオトラックは Silverlight でサポートされません
    • オーディオとビデオのデュレーションが異なる場合は、短いものがなくなるたびにプレーヤーが停止することがあります。
    ビデオ " duration「」
    オーディオトラックのデュレーションが異なる場合、カタログ/再生 API durationで報告されたビデオが正しくない可能性があります。