使用 Live API 的多語言音頻

本主題說明如何建立具有不同語言的多個音軌的即時工作。

簡介

此功能允許攝取多種音頻語言、描述性或環境音頻體驗軌道以供實時播放。您可以使用 Live API 按照此處的步驟操作。您還可以使用 Video Cloud Studio。有關詳細信息,請參閱 帶有實時模塊文檔的多語言音頻

需求

多語言音軌有一些要求。

啟用您的帳戶

  • 聯繫客戶支持以啟用具有多語言音頻功能的 Live API
  • 確保您擁有 Live API 的 API 密鑰(在設置帳戶時提供給您)

設置你的編碼器

  • 使用支持 RTP 協議的編碼器。多語言音頻支持僅限於rtp要么srt協議。
  • 從編碼器中獲取以下值:有關詳細信息,請參閱您的編碼器文檔。
    • 為編碼器中的每個音軌定義 PID(數據包標識符)
    • 在編碼器中定義與視頻關聯的 視頻 PID

    如果您不知道編碼器的 PID 值,請參閱 配置編碼器 部分。

創建您的現場工作

為了將多個音軌添加到您的作業,創建實時作業時,必須在請求正文中提供音軌列表:

{
  "live_stream": true,
  "region": "us-west-2",
  "protocol": "rtp",
  "cidr_whitelist": [ /* omitted… */ ],
  "outputs": [ /* omitted… */ ],
  "alternate_audio": {
    "tracks": [ { Track Details } ]
  }
}

支持的字段Track目的

下表包含對支持字段的完整描述track目的。

田徑場
欄位 類型 必填 描述
language

要使用的語言的代碼;目前這是靈活的,可以是規範要求/支持的各種語言格式中的任何一種,特別 是 RFC5456/BCP47 ,它也根據要求涵蓋 ISO-639

HLS> LANGUAGE領域

DASH> AdaptationSet:lang領域

video_pid 整數 來自視頻軌道的 MPEG-TS 輸入流的數據包標識符 (PID)
pid 整數 來自 MPEG-TS 輸入流的特定音軌的數據包標識符 (PID)
default 布林 是(對於默認軌道) 音軌標記為DEFAULT在裡面EXT-X-MEDIA以及要混合到視頻流中的軌道

如果不存在,則第一條軌道是默認軌道。

如果多個播放列表定義了不同的默認值,則頂層默認曲目是多路復用曲目。

label 用於曲目的文本描述,最好由玩家盡可能使用;用於:HLS> NAME領域

默認值:language每個曲目都有一個ID,例如en-0如果沒有指定

variant 枚舉 映射到 DASH 角色架構值:
  • main
  • alternate
  • commentary
  • supplementary
  • dub

高水平LS > 特徵

DASH > 角色urn:mpeg:dash:role:2011 .

默認:main

streams [] 陣列

這模仿了streams播放列表輸出類型字段;例子:{ “source”: “720p” } - 匹配輸出源的標籤

如果不存在,則使用默認音頻設置。

HLS> GROUP-ID。(目的)

範例

此示例主體將創建一個包含2條音軌的Job。

請求

POST https://api.bcovlive.io/v1/jobs
  Content-Type: application/json
  X-API-KEY: your_API_key

要求主體

{
  "live_stream": true,
  "region": "us-west-2",
  "protocol": "rtp",
  "cidr_whitelist": [
    "0.0.0.0/0"
  ],
  "outputs": [
    {
      "label": "hls720p",
      "live_stream": true,
      "height": 720,
      "video_bitrate": 2400,
      "segment_seconds": 6,
      "keyframe_interval": 90
    },
    {
      "label": "hls540p",
      "live_stream": true,
      "height": 540,
      "video_bitrate": 1200,
      "segment_seconds": 6,
      "keyframe_interval": 90
    }
  ],
  "alternate_audio": {
    "tracks": [
      {
        "label": "English",
        "language": "en",
        "variant": "main",
        "video_pid": 256,
        "pid": 257,
        "default": true
      },
      {
        "label": "Spanish",
        "language": "es",
        "variant": "main",
        "video_pid": 256,
        "pid": 258
      }
    ]
  }
}

範例回應

{
  "id": "76f814fbcd7840e99ebf0e335c933730",
  "outputs": [
      {
          "id": "0-76f814fbcd7840e99ebf0e335c933730",
          "playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist.m3u8",
          "playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
          "playback_url_vod": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_0/chunklist_vod.m3u8",
          "playback_added_cdns": [],
          "label": "hls720p"
      },
      {
          "id": "1-76f814fbcd7840e99ebf0e335c933730",
          "playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist.m3u8",
          "playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
          "playback_url_vod": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/profile_1/chunklist_vod.m3u8",
          "playback_added_cdns": [],
          "label": "hls540p"
      },
      {
          "id": "2-76f814fbcd7840e99ebf0e335c933730",
          "playlist_type": "defaultS3",
          "type": "playlist",
          "alternate_audio": {
              "tracks": [
                  {
                      "label": "English",
                      "language": "en",
                      "name": "Alt0",
                      
                      "pid": 257,
                      "playlistDefault": true,
                      "default": true,
                      "variant": "main",
                      "profile_sources": [
                          "profile_0"
                      ]
                  },
                  {
                      "label": "Spanish",
                      "language": "es",
                      "name": "Alt1",
                      
                      "pid": 258,
                      "playlistDefault": false,
                      "default": false,
                      "variant": "main",
                      "profile_sources": [
                          "profile_0"
                      ]
                  }
              ]
          },
          "filename": "playlist.m3u8",
          "dvr_filename": "playlist_dvr.m3u8",
          "playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist.m3u8",
          "playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist_dvr.m3u8",
          "playback_added_cdns": []
      }
  ],
  "stream_url": "rtp://ep3-usw2.a-live.io:11780",
  "stream_name": "76f814fbcd7840e99ebf0e335c933730.stream",
  "static": false,
  "alternate_audio": {
      "tracks": [
          {
              "label": "English",
              "language": "en",
              "pid": 257,
              "default": true,
              "variant": "main",
              "name": "Alt0"
          },
          {
              "label": "Spanish",
              "language": "es",
              "pid": 258,
              "default": false,
              "variant": "main",
              "name": "Alt1"
          }
      ]
  },
  "event_length": 93600,
  "encryption": {},
  "playback_url": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist.m3u8",
  "playback_url_dvr": "https://playback-qa.a-live.io/76f814fbcd7840e99ebf0e335c933730/us-west-2/NA/playlist_dvr.m3u8",
  "playback_added_cdns": []
}

設定您的編碼器

配置您的編碼器,以通過RTP將MPEG-TS傳遞到創建響應中的stream_url。確保在請求主體中提供的音軌在編碼器中配置了正確的PID。

使用 ffprobe 的例子

如果您不知道來自編碼器的 PID,可以使用 ffprobe(包含在 ffmpeg 中)等工具來檢查流中的 PID。

ffprobe /tmp/ma.ts
ffprobe version 5.0.1 Copyright (c) 2007-2022 the FFmpeg developers
  built with Apple clang version 13.0.0 (clang-1300.0.29.3)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/5.0.1-with-options_1 --enable-shared --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libaom --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-demuxer=dash --enable-opencl --enable-audiotoolbox --enable-videotoolbox --disable-htmlpages --enable-libvmaf --enable-version3
  libavutil      57. 17.100 / 57. 17.100
  libavcodec     59. 18.100 / 59. 18.100
  libavformat    59. 16.100 / 59. 16.100
  libavdevice    59.  4.100 / 59.  4.100
  libavfilter     8. 24.100 /  8. 24.100
  libswscale      6.  4.100 /  6.  4.100
  libswresample   4.  3.100 /  4.  3.100
  libpostproc    56.  3.100 / 56.  3.100
Input #0, mpegts, from '/tmp/ma.ts':
  Duration: 00:00:04.86, start: 1.400000, bitrate: 502 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
  Stream #0:0[0xff]: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p(progressive), 360x240 [SAR 1:1 DAR 3:2], 30 fps, 30 tbr, 90k tbn
  Stream #0:1[0x100]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 98 kb/s
  Stream #0:2[0x102]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 98 kb/s

流後的十六進制數將指示 PID。例如:

  • 0xff == 255
  • 0x100 == 256
  • 0x101 == 257

測試播放

將playback_url加載到Brightcove播放器或Safari確認播放。

DRM_Playback

當前,僅通過赶超(時移)服務支持DRM。將這些字段添加到“創建作業”請求請求正文中:

{
  "drm": {
    "modes": [
      "all"
    ]
  },
  "timeshift": {
    "type": "single",
    "startover_duration": 36000,
    "skip_live_output": true
  }
}

響應將包括DRM輸出和timeshift_url用於播放。