在影片串流中內嵌中繼資料 - Amazon Interactive Video Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在影片串流中內嵌中繼資料

Amazon Interactive Video Service (IVS) 定時中繼資料提供在 Amazon IVS 串流中內嵌中繼資料的方法。無論串流延遲或地理位置為何,都能確保所有觀眾同時在影片串流中收到中繼資料。

定時中繼資料是什麼?

定時中繼資料是帶有時間戳記的中繼資料。可以使用 IVS API 或 IVS 廣播 SDK 以程式設計方式將其插入串流中。當 Amazon IVS 處理串流時,定時中繼資料會與音訊和影片影格同步。在播放期間,串流的所有觀眾都會同時取得與串流有關的中繼資料。時間碼做為提示點,可用來根據資料觸發動作,如下所示:

  • 更新運動串流的球員統計資料。

  • 傳送即時購物串流的產品詳細資訊。

  • 傳送即時測驗串流的問題。

Amazon IVS 定時中繼資料使用內嵌於影片區段中的 ID3 標籤。因此,可以在錄製的影片中使用它們。

設定 IAM 許可

必要條件:在繼續進行之前,您應該先完成 開始使用 IVS 低延遲串流 (包括建立 IAM 使用者和設定許可)。

接下來,您必須授予 IAM 使用者許可,以便使用定時中繼資料。請遵循下列步驟:

  1. 登入 AWS 管理主控台,然後前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在導覽窗格中,選擇 Users (使用者),然後選擇所需的使用者 (您在建立 AWS 帳戶時指定的使用者名稱)。

  3. 在使用者 Summary (摘要) 視窗中,在 Permissions (許可) 標籤中,選擇 Add inline policy (新增內嵌政策) (在右側)。

  4. JSON 標籤中,貼上此 Blob:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ivs:PutMetadata" ], "Resource": "arn:aws:ivs:*:*:channel/*" } ] }
  5. 仍在 Create Policy (建立政策) 視窗中,選擇 Review Policy (檢閱政策)。輸入政策 Name (名稱),然後選擇 Create Policy (建立政策)。

  6. 您將返回到使用者 Summary (摘要) 視窗,會顯示新的政策名稱。

插入定時中繼資料

您只能將定時中繼資料插入指定頻道上作用中的串流。

使用 AWS CLI

對於測試,新增定時中繼資料的最簡單方法是使用 AWS CLI。使用 AWS CLI 要求您先在機器上下載並設定 CLI。當您完成 開始使用 IVS 低延遲串流 後可能已經完成它;如果沒有,現在就完成。如需詳細資訊,請參閱 AWS 命令列界面使用者指南

擁有 CLI 之後:

  1. 執行 put-metadata 命令並傳入頻道 ARN 和中繼資料:

    aws ivs put-metadata --channel-arn <your-channel-arn> --metadata <your-metadata>

    例如:

    aws ivs put-metadata --channel-arn arn:aws:ivs:us-west-2:465369119046:channel/GbiYJna5hFoC --metadata '{"question": "What does IVS stand for?", "correctIndex": 0, "answers": ["interactive video service", "interesting video service", "ingenious video service"]}'
  2. Amazon IVS 檢查串流是否為即時狀態。如果串流不是即時狀態,您會收到錯誤;否則,CLI 會傳回而不會發生錯誤,且中繼資料 (文字 Blob) 會插入至串流中。這會盡快發生。無法保證何時發生;不過,所有觀眾都會在串流中的相同位置看到中繼資料。

使用 Amazon IVS API

若要以程式設計方式插入定時中繼資料,請使用 PutMetadata API 端點。

以下是 HTTP 請求範例:

POST /PutMetadata HTTP/1.1 { "channelArn": "my_channel", "metadata": "{\"question\": \"What does IVS stand for?\", \"correctIndex\": 0, \"answers\": [\"interactive video service\", \"interesting video service\", \"ingenious video service\"]}" }

使用 IVS 廣播 SDK

您可以使用 IVS 廣播 SDK 在頻帶內插入定時中繼資料。這對於將中繼資料與音訊和影片內容同步化可能很有用。

  • Android – 在 BroadcastSession 類別中,使用 sendTimedMetadata

  • iOS – 在 IVSBroadcastSession 類別中,使用 sendTimedMetadata

使用定時中繼資料

使用 Amazon IVS 播放器來取用內嵌在影片串流中的定時中繼資料。請參閱 Amazon IVS 播放器 SDK 和播放器文件的其餘部分。

以下是範例程式碼片段,它們會列印使用 Amazon IVS 播放器開發套件的主控台接收的任何中繼資料。每當播放到達含有內嵌中繼資料的區段時,就會觸發事件。(本次事件為適用於 Web 的 TEXT_METADATA_CUE、適用於 Android 的 onCue(),以及適用於 iOS 的 player(_:didOutputCue:)。) 您可以使用此事件來啟動用戶端應用程式中的功能,例如更新互動式 Widget。即時和錄製的內容都會觸發此事件。

適用於 Web 的 Amazon IVS 播放器開發套件:

const player = IVSPlayer.create(); player.addEventListener(IVSPlayer.PlayerEventType.TEXT_METADATA_CUE, function (cue) { console.log('Timed metadata: ', cue.text); });

適用於 Android 的 Amazon IVS 播放器開發套件:

@Override public void onCue(@NonNull Cue cue) { if(cue instanceof TextMetadataCue) { Log.i("Timed Metadata: ", ((TextMetadataCue)cue).text); } }

適用於 iOS 的 Amazon IVS 播放器開發套件:

func player(_ player: IVSPlayer, didOutputCue cue: IVSCue) { if let textMetadataCue = cue as? IVSTextMetadataCue { print("Timed Metadata: \(textMetadataCue.text)") } }

備註:在播放器 1.3.0 及更新版本中,iOS Safari 和 iOS Chrome 支援定時中繼資料。

示範範本:測驗應用程式

在 GitHub 上可取得互動式測驗應用程式的程式碼範例。我們透過定時中繼資料使用 JSON 來填入測驗 UI 以顯示問題和答案。答案是可選的,並顯示選擇是否正確。

Amazon IVS 播放器開發套件平台 範例庫

Web

https://github.com/aws-samples/amazon-ivs-basic-web-sample

在此儲存庫中,請參閱測驗示範 (和即時示範)。

Android

https://github.com/aws-samples/amazon-ivs-player-android-sample

在此儲存庫中,請參閱測驗示範

iOS

https://github.com/aws-samples/amazon-ivs-player-ios-sample

在此儲存庫中,請參閱測驗示範

檢視定時中繼資料

如有需要,您可以在主控台中檢視內嵌於即時串流中的定時中繼資料:

  1. 開啟 Amazon IVS 主控台

  2. 在左上角,選擇漢堡包圖示以開啟導覽窗格,然後選擇 Live channels (即時頻道)。

  3. 選擇您要檢視其串流的頻道,前往該頻道的詳細資訊頁面。

    正在頁面的 Live stream (即時串流) 部分中播放即時串流。

  4. 在視窗底部,選擇 Timed Metadata (定時中繼資料)。

    播放器正在播放時,當接收到每個定時中繼資料事件時,會顯示其值和接收時間。

如需詳細資訊

請參閱使用 Amazon Interactive Video Service 定時中繼資料,這是關於使用 Amazon IVS 定時中繼資料的兩部分部落格系列的第一部分。