IVS RTMP 發布 | 即時串流 - Amazon IVS

IVS RTMP 發布 | 即時串流

本文件概述使用 RTMP 發布至 IVS 舞台的程序。如需有關各種擷取選項的其他詳細資訊,請參閱串流擷取文件

必要條件

建立階段

若要建立舞台,請使用下列命令:

aws ivs-realtime create-stage --name "test-stage"

如需詳細資訊 (包括回應),請參閱 CreateStage

重要事項:記下回應中的 endpoints 欄位,其中同時列出 RTMP 和 RTMPS 端點。這些是設定 RTMP 編碼器的必要內容。

建立擷取組態

若要使用 RTMPS 發布至舞台,您必須先建立擷取組態,並將其與舞台建立關聯。發布至此舞台 (使用擷取組態中的串流金鑰和舞台的 RTMP 端點) 時,媒體會作為參與者發布至舞台。您可以選擇指定 userId 和自訂 attributes,這會與連線至此舞台的參與者建立關聯。

aws ivs-realtime create-ingest-configuration \ --name 'test' \ --stage-arn arn:aws:ivs:us-east-1:123456789012:stage/8faHz1SQp0ik \ --user-id '123' \ --ingest-protocol 'RTMPS'

如需詳細資訊 (包括回應),請參閱 CreateIngestConfiguration

建立擷取組態時,您可以預先將其與特定舞台 ARN 建立關聯。如果沒有此關聯,串流金鑰就無法使用。此外,可以透過 UpdateIngestConfiguration 操作更新擷取組態 (包括 stageArn 欄位),將相同的組態重複用於不同的舞台。

注意:擷取組態 insecureIngest 欄位預設為 false,需要使用 RTMPS。RTMP 連線將遭到拒絕。如果您必須使用 RTMP,請將 insecureIngest 設為 true。除非您有需使用 RTMP 的經驗證特定使用案例,否則我們建議您使用 RTMPS。

RTMP 單軌視訊

下文我們會介紹如何使用 OBS Studio;不過,您可以使用符合 IVS 媒體規格的任何 RTMP 編碼器。

OBS 指南

  1. 下載並安裝軟體:https://obsproject.com/download

  2. 按一下 設定。在設定面板的串流區段中,從服務下拉式清單中選取自訂

  3. 伺服器欄位中,輸入此舞台的 RTMP 或 RTMPS 端點。

  4. 串流金鑰欄位中,輸入擷取組態的 streamKey

  5. 如往常一樣進行影片設定,但需要遵守一些限制:

    1. IVS 即時串流支援在 8.5 Mbps 高達 720p 的輸入。如果超過上述任一限制,串流將會遭到中斷。

    2. 建議您在輸出面板中,將關鍵影格間隔設定為 1 秒或 2 秒。縮短關鍵影格間隔可更快地為觀眾開始播放影片。我們也建議將 CPU 使用量預設值設為非常快速,並將調校設為零延遲,以實現最低延遲。

    3. 由於 OBS 不支援 Simulcast,因此建議您將位元速率保持在 2.5 Mbps 以下。這可讓使用低頻寬連線的觀眾也能觀看。

    4. 停用 B 影格,因為具有 B 影格的串流會自動遭到中斷。執行以下任意一項:

      • 在 x264 選項中,輸入 bframes=0 sliced-threads=0

      • 如果 B 影格選項可用 (例如用於 NVENC 時),則將其設定為 0。

    備註:RTMP 串流必須包含聲音和影片播放軌,否則它們會遭到中斷。

  6. 選取開始串流

重要事項:如果將編碼器的最大位元速率設定為 8.5 Mbps,則發布者偶爾會從工作階段中消失。這是因為最大位元速率設定只是目標,編碼器偶爾會超過此目標。若要防止這種情況,請將編碼器的最大位元速率設為較低的值;例如,設為 6 Mbps。

E-RTMP 多軌視訊

IVS 支援 E-RTMP (增強型即時傳訊協定) 多軌視訊功能,可讓您在單一 RTMP 串流中將多種視訊品質發布至 IVS 舞台。此功能還會啟用自適應位元速率串流,因此訂閱用戶可以自動觀看其網路連線情況下的最佳品質視訊。

擷取後,不同的視訊品質會以 Simulcast 分層的形式交付給訂閱用戶。若要設定訂閱用戶接收哪些層,請參閱相應 AndroidiOSWeb 即時串流廣播 SDK 指南中的「Simulcast 分層編碼」章節:

如需範例程式碼,請參閱 GitHub 上的 aws-samples/sample-amazon-ivs-multitrack-video

此圖說明使用多軌視訊進行發布的運作方式:

將多軌視訊發布至舞台。

OBS 指南

  1. 下載並安裝 OBS Studio:

    1. Windows:從 OBS Studio 30.2 開始支援多軌視訊。

    2. macOS:從 OBS Studio 31.1 Beta 版開始支援多軌視訊 (僅限 Apple Silicon)。

    3. 下載網址:https://obsproject.com/download

  2. 按一下 設定。在設定面板的串流區段中,從服務下拉式清單中選取 Amazon IVS

  3. 伺服器中,請將設定保留為自動

  4. 串流金鑰欄位中,輸入擷取組態的 streamKey

  5. 多軌視訊區段下,勾選啟用多軌視訊

  6. 視訊面板中,設定所需的基本 (畫布解析度)輸出 (擴展) 解析度。IVS 即時串流支援高達 720p 的輸入。如果超過此限制,串流將會遭到中斷。

    啟用多軌視訊後,系統會根據裝置的功能自動設定視訊軌數、位元速率和關鍵影格間隔等設定。

  7. 選取開始串流

使用 FFmpeg 進行發布

您可以使用 FFmpeg 透過 RTMP 將即時影片和音訊發布至 IVS 即時串流。FFmpeg 是一個免費的開放原始碼專案,包括一套全面的軟體程式庫和工具,用於處理影片、音訊和其他多媒體內容。

下列範例命令會發布包含顏色模式和色調的串流:

ffmpeg \ -re \ -f lavfi -i testsrc=d=300:s=1280x720:r=60,format=yuv420p \ -f lavfi -i sine=f=440:b=4:d=300 \ -c:v libx264 \ -b:v 2500k \ -g 60 -bf 0 \ -profile:v baseline \ -preset veryfast \ -tune zerolatency \ -x264opts sliced-threads=0 \ -c:a aac \ -ac 2 \ -b:a 160k \ -ar 48000 \ -f flv \ rtmps://$INGEST_ENDPOINT/app/$STREAM_KEY

在範例中,使用來自 IVS 主控台或 API 的值取代 $INGEST_ENDPOINT$STREAM_KEY

此組態符合 IVS 即時串流的支援的媒體規格,包括 H.264 影片 (基準描述檔、無 B 影格、無分割執行緒) 和 AAC 音訊。

私有擷取至階段

您可以使用介面 VPC 端點,從 Amazon VPC 內的資源或 Direct Connect 將 RTMP(S) 和 E-RTMP(S) 串流發布至階段。這可在 VPC 和 IVS 之間建立私有連線,將擷取流量保留在 AWS 網路內。若要設定和組態 IVS 的介面 VPC 端點,請參閱《IVS 低延遲串流使用者指南》中的 IVS 私有擷取