在影片串流中內嵌中繼資料
Amazon Interactive Video Service (IVS) 定時中繼資料提供在 Amazon IVS 串流中內嵌中繼資料的方法。無論串流延遲或地理位置為何,都能確保所有觀眾同時在影片串流中收到中繼資料。
定時中繼資料是什麼?
定時中繼資料是帶有時間戳記的中繼資料。可以使用 IVS API 或 IVS 廣播 SDK 以程式設計方式將其插入串流中。當 Amazon IVS 處理串流時,定時中繼資料會與音訊和影片影格同步。在播放期間,串流的所有觀眾都會同時取得與串流有關的中繼資料。時間碼做為提示點,可用來根據資料觸發動作,如下所示:
-
更新運動串流的球員統計資料。
-
傳送即時購物串流的產品詳細資訊。
-
傳送即時測驗串流的問題。
Amazon IVS 定時中繼資料使用內嵌於影片區段中的 ID3 標籤。因此,可以在錄製的影片中使用它們。
設定 IAM 許可
必要條件:在繼續進行之前,您應該先完成 開始使用 IVS 低延遲串流 (包括建立 IAM 使用者和設定許可)。
接下來,您必須授予 IAM 使用者許可,以便使用定時中繼資料。請遵循下列步驟:
-
登入 AWS 管理主控台,然後前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在導覽窗格中,選擇 Users (使用者),然後選擇所需的使用者 (您在建立 AWS 帳戶時指定的使用者名稱)。
-
在使用者 Summary (摘要) 視窗中,在 Permissions (許可) 標籤中,選擇 Add inline policy (新增內嵌政策) (在右側)。
-
在 JSON 標籤中,貼上此 Blob:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ivs:PutMetadata" ], "Resource": "arn:aws:ivs:*:*:channel/*" } ] }
-
仍在 Create Policy (建立政策) 視窗中,選擇 Review Policy (檢閱政策)。輸入政策 Name (名稱),然後選擇 Create Policy (建立政策)。
-
您將返回到使用者 Summary (摘要) 視窗,會顯示新的政策名稱。
插入定時中繼資料
您只能將定時中繼資料插入指定頻道上作用中的串流。
使用 AWS CLI
對於測試,新增定時中繼資料的最簡單方法是使用 AWS CLI。使用 AWS CLI 要求您先在機器上下載並設定 CLI。當您完成 開始使用 IVS 低延遲串流 後可能已經完成它;如果沒有,現在就完成。如需詳細資訊,請參閱 AWS 命令列界面使用者指南。
擁有 CLI 之後:
-
執行
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"]}'
-
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 播放器來取用內嵌在影片串流中的定時中繼資料。請參閱 IVS 播放器開發套件 和播放器文件的其餘部分。
以下是範例程式碼片段,它們會列印使用 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 |
|
Android |
https://github.com/aws-samples/amazon-ivs-player-android-sample 在此儲存庫中,請參閱測驗示範 |
iOS |
https://github.com/aws-samples/amazon-ivs-player-ios-sample 在此儲存庫中,請參閱測驗示範 |
檢視定時中繼資料
如有需要,您可以在主控台中檢視內嵌於即時串流中的定時中繼資料:
-
開啟 Amazon IVS 主控台
。 -
在左上角,選擇漢堡包圖示以開啟導覽窗格,然後選擇 Live channels (即時頻道)。
-
選擇您要檢視其串流的頻道,前往該頻道的詳細資訊頁面。
正在頁面的 Live stream (即時串流) 部分中播放即時串流。
-
在視窗底部,選擇 Timed Metadata (定時中繼資料)。
播放器正在播放時,當接收到每個定時中繼資料事件時,會顯示其值和接收時間。
如需詳細資訊
請參閱使用 Amazon Interactive Video Service 定時中繼資料