

# IVS 串流擷取 \$1 即時串流
<a name="rt-stream-ingest"></a>

除了使用 IVS 廣播 SDK 之外，您也可以從 WHIP 或 RTMP 來源將影片發布至 IVS 舞台。如果使用 SDK 不可行或不是偏好的方式 (例如從 OBS Studio 或硬體編碼器發布影片時)，此方法就能為您提供工作流程靈活性。建議您盡可能使用 IVS 廣播 SDK，因為我們無法保證第三方解決方案與 IVS 的相容性或是搭配使用時的效能。

此圖表說明使用 WHIP 和 RTMP 進行發布的運作方式：

![\[使用 WHIP 和 RTMP 進行發布。\]](http://docs.aws.amazon.com/zh_tw/ivs/latest/RealTimeUserGuide/images/Stream_Ingest.png)


## 支援的通訊協定
<a name="supported-protocols"></a>

IVS 即時串流支援數個擷取通訊協定：
+ RTMP 和 RTMPS – RTMP (即時訊息通訊協定) 是透過網路傳輸視訊的業界標準協定。RTMPS 是透過 TLS 運作的安全 RTMP 版本。

  IVS 支援 E-RTMP (增強型 RTMP) 多軌視訊功能。請參閱「IVS RTMP 發布」文件中的 [E-RTMP 多軌視訊](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-rtmp-publishing.html#rtmp-multitrack)。
+ WHIP (WebRTC-HTTP 擷取通訊協定) – 為標準化 WebRTC 擷取而開發的 IETF 草案。

 如需有關使用這些通訊協定的詳細指引，請參閱 [RTMP](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-rtmp-publishing.html) 和 [WHIP](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/obs-whip-support.html) 文件。

## 支援的媒體規格
<a name="supported-media-specifications"></a>
+ 音訊輸入格式
  + 編解碼器：AAC-LC (用於 RTMP) 和 Opus (用於 WHIP)
  + 聲道：2 (立體聲) 或 1 (單聲道)
  + 取樣率：44.1 kHz 或 48 kHz
  + 位元速率上限：160 Kbps
+ 視訊輸入格式
  + 編解碼器：H.264
  + H.264 設定檔：基準
  + IDR 間隔：1 或 2 秒
  + 影格速率：10 到 60 FPS
  + B 影格：0

    注意：IVS 廣播 SDK 依預設已啟用 B 影格，但從 1.25.0 版開始，會在廣播至 IVS 舞台時自動停用 B 影格。如果使用其他 RTMP 編碼器進行即時串流，開發人員必須停用 B 影格。*如果使用其他 RTMP 編碼器但未停用 B 影格，串流會遭到中斷*。
  + 解析度：上限：720p。下限：160p
  + 位元速率上限：8.5 Mbps

    注意：對於單軌 RTMP 串流，此限制適用於該軌。對於使用增強型 RTMP 發布的多軌視訊，此限制適用於所有視訊軌的合併位元速率。
  + 編碼器組態：建議您針對 H.264 編碼器使用 `veryfast` 和 `zerolatency` 設定。此外：`zerolatency` 預設中包含 `sliced_threads` x264 選項，建議您停用該選項。例如，使用 FFmpeg 時，命令應包含：`-preset:v veryfast -tune zerolatency -x264-params sliced-threads=0`

# 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)。

# IVS WHIP 發布 \$1 即時串流
<a name="obs-whip-support"></a>

本文件說明如何使用 OBS 等 WHIP 相容編碼器，來發布至 IVS 即時串流。[WHIP](https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html) (WebRTC-HTTP 擷取通訊協定) 是為了標準化 WebRTC 擷取而開發的 IETF 草案。

WHIP 可以與 OBS 等軟體相容，為桌面發布提供了一種替代方案 (IVS 廣播 SDK)。熟悉 OBS 的更資深的實況主可能更喜歡它，因為它具有進階生產功能，例如轉換場景，混合音訊和添加圖形浮水印。這為開發人員提供多元的選項：使用 IVS Web 廣播 SDK 直接在瀏覽器進行發布，或允許實況主在其桌面使用 OBS 以存取更強大的工具。

此外，在不可使用或不偏好使用 IVS 廣播 SDK 的情形下，WHIP 就很有用。例如，在涉及硬體編碼器的設定中，IVS 廣播 SDK 可能不適用。但是，如果編碼器支援 WHIP，您仍然可以直接從編碼器發布到 IVS。

**WHIP 要求：**
+ 您的 SDP 供應項目必須包含 H.264 影片軌道，即使您只發佈音訊亦如此。如果供應項目不包含影片軌道，連線會遭拒。
+ 全域 WHIP 端點 (https://global.whip.live-video.net) 會傳回一個 307 暫時重新導向。WHIP 用戶端必須正確處理 307 重新導向，並根據 WHIP 規格的要求，在重新導向的請求中保留標頭。

## OBS 指南
<a name="whip-support-obs-guide"></a>

自第 30 版起，OBS 支援 WHIP。若要開始，請下載 OBS 第 30 版或更新版本：[https://obsproject.com/](https://obsproject.com/)。

若要透過 WHIP 使用 OBS 發布至 IVS 舞台，請遵循下列步驟：

1. [產生](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/getting-started-distribute-tokens.html)具有發布功能的參與者權杖。就 WHIP 而言，參與者權杖是持有人權杖。根據預設，參與者權杖會在 12 小時後過期，但您可以將持續時間延長至 14 天。

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

1. 在**伺服器**欄位中，輸入 https://global.whip.live-video.net。

1. 在**持有人權杖**欄位中，輸入您在步驟 1 中產生的參與者權杖。

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

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

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

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

1. 按下**開始串流**。

**注意**：我們留意到 OBS 中可能發生的與 WHIP 相關的品質問題 (例如間歇性影片凍結)。這些問題通常會在廣播者的網路不穩定時發生。建議您在 OBS 中測試 WHIP，然後再將其用於生產即時串流。降低廣播位元速率也有助於減少這些問題的發生次數。