

# IVS RTMP 發布 \$1 即時串流
<a name="rt-rtmp-publishing"></a>

本文件概述使用 RTMP 發布至 IVS 舞台的程序。如需有關各種擷取選項的其他詳細資訊，請參閱[串流擷取](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html)文件

## 必要條件
<a name="rtmp-prerequisites"></a>

### 建立階段
<a name="rtmp-create-stage"></a>

若要建立舞台，請使用下列命令：

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

如需詳細資訊 (包括回應)，請參閱 [CreateStage](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateStage.html)。

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

### 建立擷取組態
<a name="rtmp-create-an-ingest-configuration"></a>

若要使用 RTMPS 發布至舞台，您必須先建立擷取組態，並將其與舞台建立關聯。發布至此舞台 (使用擷取組態中的串流金鑰和舞台的 RTMP 端點) 時，媒體會作為參與者發布至舞台。您可以選擇指定 `userId` 和自訂 `attributes`，這會與連線至此舞台的[參與者](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_Participant.html)建立關聯。

```
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](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateIngestConfiguration.html)。

建立擷取組態時，您可以預先將其與特定舞台 ARN 建立關聯。如果沒有此關聯，串流金鑰就無法使用。此外，可以透過 [UpdateIngestConfiguration](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_UpdateIngestConfiguration.html) 操作更新擷取組態 (包括 `stageArn` 欄位)，將相同的組態重複用於不同的舞台。

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

## RTMP 單軌視訊
<a name="rtmp-singletrack"></a>

下文我們會介紹如何使用 OBS Studio；不過，您可以使用符合 IVS [媒體規格](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html#supported-media-specifications)的任何 RTMP 編碼器。

### OBS 指南
<a name="rtmp-singletrack-obs"></a>

1. 下載並安裝軟體：[https://obsproject.com/download](https://obsproject.com/download)。

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

1. 在**伺服器**欄位中，輸入此舞台的 RTMP 或 RTMPS 端點。

1. 在**串流金鑰**欄位中，輸入擷取組態的 `streamKey`。

1. 如往常一樣進行影片設定，但需要遵守一些限制：

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

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

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

   1. 停用 B 影格，因為具有 B 影格的串流會自動遭到中斷。執行以下任意一項：
      + 在 x264 選項中，輸入 `bframes=0 sliced-threads=0`。
      + 如果 B 影格選項可用 (例如用於 NVENC 時)，則將其設定為 0。

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

1. 選取**開始串流**

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

## E-RTMP 多軌視訊
<a name="rtmp-multitrack"></a>

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

擷取後，不同的視訊品質會以 Simulcast 分層的形式交付給訂閱用戶。若要設定訂閱用戶接收哪些層，請參閱相應 [Android](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-android.html)、[iOS](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-ios.html) 和 [Web](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-web.html) 即時串流廣播 SDK 指南中的「Simulcast 分層編碼」章節：

如需範例程式碼，請參閱 GitHub 上的 [aws-samples/sample-amazon-ivs-multitrack-video](https://github.com/aws-samples/sample-amazon-ivs-multitrack-video)。

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

![\[將多軌視訊發布至舞台。\]](http://docs.aws.amazon.com/zh_tw/ivs/latest/RealTimeUserGuide/images/E-RTMP.png)


### OBS 指南
<a name="rtmp-multitrack-obs"></a>

1. 下載並安裝 OBS Studio：

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

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

   1. 下載網址：[https://obsproject.com/download](https://obsproject.com/download)。

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

1. 在**伺服器**中，請將設定保留為**自動**。

1. 在**串流金鑰**欄位中，輸入擷取組態的 `streamKey`。

1. 在**多軌視訊**區段下，勾選**啟用多軌視訊**。

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

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

1. 選取**開始串流**。

### 使用 FFmpeg 進行發布
<a name="rtmp-multitrack-ffmpeg"></a>

您可以使用 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 即時串流的[支援的媒體規格](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html#supported-media-specifications)，包括 H.264 影片 (基準描述檔、無 B 影格、無分割執行緒) 和 AAC 音訊。

## 私有擷取至階段
<a name="private-ingest-stages"></a>

您可以使用介面 VPC 端點，從 Amazon VPC 內的資源或 Direct Connect 將 RTMP(S) 和 E-RTMP(S) 串流發布至階段。這可在 VPC 和 IVS 之間建立私有連線，將擷取流量保留在 AWS 網路內。若要設定和組態 IVS 的介面 VPC 端點，請參閱《IVS 低延遲串流使用者指南》**中的 [IVS 私有擷取](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-ingest-ll.html)。