

# 步驟 5：設定串流軟體
<a name="getting-started-set-up-streaming"></a>

您可以使用以下方式串流 (低延遲) 到 Amazon IVS：
+ 支援 RTMPS 的原生 [IVS 廣播 SDK](#broadcast-sdk)。建議採用此方式，尤其在生產情境下。
+ [Amazon IVS 主控台](#ivs-console)：適用於測試串流。
+ 其他串流軟體和硬體編碼器：您可以使用任何支援 RTMP、RTMPS 或 SRT 通訊協定的串流編碼器。以下介紹幾個範例，說明如何運用 Open Broadcast Software (OBS) 與 FFmpeg，結合 RTMPS 和 SRT 進行串流。RTMPS 透過使用加密的 TLS 串流來實現高安全性。

主要編碼器設定為關鍵影格間隔 (2 秒) 和解析度/位元速率/影格播放速率 (相互關聯)。如需有關編碼器設定的詳細資訊，請參閱：
+ [串流組態](streaming-config.md) (位於 *Amazon IVS 使用者指南*) 
+ 這篇落格文章：[使用 Amazon Interactive Video Service 設定串流](https://aws.amazon.com/blogs/media/setting-up-for-streaming-with-amazon-ivs/)

**備註：**
+ Amazon IVS 串流的最長持續時間為 48 小時。之後，串流終止並且串流工作階段中斷連線。成功的重新連線 (自動或手動) 會啟動新的串流。
+ 如果編碼器停止傳送資料 (例如，因為暫時性的網路問題而停止傳送)，Amazon IVS 會等待 30 秒。如果在此期間沒有收到任何廣播器資料，Amazon IVS 就會中斷連線。

## 使用 Amazon IVS 廣播開發套件進行串流
<a name="broadcast-sdk"></a>

若要從您的 iOS 或 Android 應用程式廣播，您可以使用 Amazon IVS 廣播開發套件。廣播開發套件利用了 Amazon IVS 架構，並且會持續使用 Amazon IVS 的改善項目和新功能。作為原生行動廣播開發套件，其設計目的是針對您的應用程式和使用者存取應用程式的裝置，將效能影響降至最低。


| 若要從...廣播 | 您可以使用... | 備註 | 
| --- | --- | --- | 
| Android 或 iOS 應用程式 | Amazon IVS Android 或 iOS 廣播開發套件 | 作為原生行動廣播開發套件，其設計目的是針對您的應用程式和使用者存取應用程式的裝置，將效能影響降至最低。 | 
| Web 環境 | Amazon IVS Web 廣播開發套件 | 作為 Web 廣播開發套件，Amazon IVS Web 廣播開發套件可讓您使用 WebRTC 從 Web 環境進行廣播。其擁有跨瀏覽器和跨平台的支援。 | 

如需詳細資訊，請參閱 [IVS 廣播 SDK \| 低延遲串流](broadcast.md)。

## 使用 Amazon IVS 主控台進行串流
<a name="ivs-console"></a>

1. 開啟 [Amazon IVS 主控台](https://console.aws.amazon.com/ivs)。

   (您也可以透過 [AWS 管理主控台](https://console.aws.amazon.com/)來存取 Amazon IVS 主控台。)

1. 在導覽窗格中選擇**頻道**。(如果導覽窗格已收起，選取漢堡圖示即可展開。)

1. 選擇要廣播的頻道，前往其詳細資訊頁面。

1. 選取**廣播**索引標籤。(索引標籤位於**一般組態**區段下方)。

1. 系統會提示您授予 IVS 主控台存取攝影機和麥克風的權限；請**允許**這些權限。

1. 在**廣播**索引標籤的底部，使用下拉式方塊選擇麥克風和攝影機的輸入裝置。

1. 若要開始串流，請選取**開始廣播**。

1. 若要檢視即時串流，請前往**播放**索引標籤。

   **注意**：開始串流後，預期會有短暫的延遲 (通常在 30 秒內)，才能在播放索引標籤中檢視。

您可以使用此功能同時廣播到多個頻道。

**請注意**：從主控台進行串流會耗用資源，而且會產生即時影片輸入費用。如要深入了解，請參閱 IVS 定價頁面上的[即時影片輸入費用](https://aws.amazon.com/ivs/pricing/#Low-Latency_Streaming)。

## 透過 RTMPS 使用 OBS Studio 串流
<a name="obs-rtmps"></a>

([OBS Studio](https://obsproject.com/)) 是一個免費的開放原始碼軟體套件，用於錄製和即時串流。OBS 提供即時來源和裝置擷取、場景合成、編碼、錄製和串流。

請依照以下步驟，使用 OBS Studio v30.2 以上版本快速開始並執行：

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

1. 執行 OBS Studio **自動組態精靈**，它在您第一次載入 OBS Studio 時出現。請依照步驟執行並接受預設值。

1. 在**串流資訊**中，從**服務**下拉式清單中選擇 **Amazon IVS**，然後輸入**串流金鑰**。

   如果您是使用 Amazon IVS 主控台建立頻道，則您在 OBS 中輸入的**串流金鑰**就是主控台的**串流金鑰**：`sk_us-west-2_abcd1234efgh5678ijkl`

   如果您是使用 AWS CLI 建立頻道，則您在 OBS 中輸入的**串流金鑰**是來自 CLI 回應的 **streamKey 值** `sk_us-west-2_abcd1234efgh5678ijkl`

   如果您的 IVS 頻道設定為多軌視訊輸入，請選取**啟用多軌視訊**。或者，您也可以自行設定**視訊軌數上限**和**串流頻寬上限**，這樣就能限制系統自動幫您設定的串流參數。

1. 對於 **Video Output Resolution** (影片輸出解析度) 和 **Bitrate** (位元速率)，請參閱 *Amazon IVS 串流組態*中的[頻道類型](streaming-config.md#streaming-config-settings-channel-types)。如果 OBS 精靈選擇的任一值超過了 Amazon IVS 允許的值，您應該手動調整值以避免與 Amazon IVS 的連線失敗。精靈完成後：

   1. 若要調整影片解析度，請使用 **Settings > Video > Output (Scaled) Resolution** (設定 > 影片 > 輸出 (縮放) 解析度)。

   1. 若要調整影片位元速率，請使用 **Settings > Output > Streaming > Video Bitrate** (設定 > 輸出 > 串流 > 影片位元速率)。

      **注意：**如果您先前已勾選**啟用多軌視訊**，這不會影響即時串流。

1. 建議使用 2 秒的**關鍵影格間隔**來提高串流穩定性，並避免在觀眾播放時緩衝。精靈完成後，進入**設定 > 輸出 > 輸出模式**，選取**進階**，並確保**串流**索引標籤中的**關鍵影格間隔**為 2。

   **注意：**如果您先前已勾選**啟用多軌視訊**，系統會自動設定關鍵影格間隔。

1. 在 OBS Studio 主視窗中，選擇**開始串流**。

有關使用 OBS Studio 進行串流的更多資訊，請參閱 [OBS Studio 快速入門](https://obsproject.com/wiki/OBS-Studio-Quickstart)。

您可以稍後手動修改您的 OBS 設定：

1. 選擇 **Settings > Stream** (設定 > 串流)。

1. 從下拉式清單中選擇 **Amazon IVS**。

1. 貼上**串流金鑰**。

您可以隨時再次執行精靈：選擇 **Tools > Auto-Configuration Wizard** (工具 > 自動組態精靈)。

或者，在**設定 > 一般**中，請啟用本機錄製功能，以儲存您的即時串流供日後使用。如前所述，廣播和 AWS 之間或 AWS 內部的網路問題可能會導致在錄製串流時遺失某些資料。在這些情況下，Amazon IVS 會將即時串流優先於錄製。透過串流工具進行本機錄製，可提供備援。

建議您定期檢查 OBS Studio 更新並更新至最新版本。(例如，如果您收到「無法連接至伺服器」錯誤，則可能正在使用不支援 RTMPS 的舊版本的 OBS Studio。)

## 透過 SRT 使用 OBS Studio 串流
<a name="obs-srt"></a>

請依照下列步驟，使用安全可靠的傳輸通訊協定快速開始並執行：

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

1. 執行 OBS Studio **自動組態精靈**，它在您第一次載入 OBS Studio 時出現。請依照步驟執行並接受預設值。

1. 在 **Stream Information** (串流資訊) 中，從 **Service** (服務) 下拉式選單中選擇 **Custom...** (自訂...) 並輸入 **Server (Ingest server)** (伺服器 (擷取伺服器)) 和 **Stream Key** (串流金鑰)。

   如果您使用 AWS CLI 建立頻道：
   + 您在 OBS 中輸入的**伺服器**是五項組合：
     + 擷取通訊協定：`srt://`
     + CLI 回應中 `srt` 結構的**端點**：

       `a1b2c3d4e5f6.srt.live-video.net`
     + 連接埠：`9000`
     + 串流 ID，這是來自 CLI 回應的 **streamKey 值**：

       `sk_us-west-2_abcd1234efgh5678ijkl`
     + 用於加密內容的密碼短語。只有在未啟用**不安全的擷取**時，才能使用此功能。

       `ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ`

     完整項目為：

     `srt://a1b2c3d4e5f6.srt.live-video.net:9000?streamid=sk_us-west-2_abcd1234efgh5678ijkl&passphrase=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ`
   + 使用 SRT 通訊協定時，OBS 中輸入的**串流金鑰**會保持空白。

1. 對於 **Video Output Resolution** (影片輸出解析度) 和 **Bitrate** (位元速率)，請參閱 *Amazon IVS 串流組態*中的[頻道類型](streaming-config.md#streaming-config-settings-channel-types)。如果 OBS 精靈選擇的任一值超過了 Amazon IVS 允許的值，您應該手動調整值以避免與 Amazon IVS 的連線失敗。精靈完成後：

   1. 若要調整影片解析度，請使用 **Settings > Video > Output (Scaled) Resolution** (設定 > 影片 > 輸出 (縮放) 解析度)。

   1. 若要調整影片位元速率，請使用 **Settings > Output > Streaming > Video Bitrate** (設定 > 輸出 > 串流 > 影片位元速率)。

1. 建議使用 2 秒的**關鍵影格間隔**來提高串流穩定性，並避免在觀眾播放時緩衝。精靈完成後，進入**設定 > 輸出 > 輸出模式**，選取**進階**，並確保**串流**索引標籤中的**關鍵影格間隔**為 2。

1. 在 OBS Studio 主視窗中，選擇**開始串流**。

您可以稍後手動修改您的 OBS 設定：

1. 選擇 **Settings > Stream** (設定 > 串流)。

1. 從下拉式清單中選擇 **Custom** (自訂)。

1. 在 **Server** (伺服器) 和/或 **Stream Key** (串流金鑰) 中貼上。

您可以隨時再次執行精靈：選擇 **Tools > Auto-Configuration Wizard** (工具 > 自動組態精靈)。

或者，在**設定 > 一般**中，請啟用本機錄製功能，以儲存您的即時串流供日後使用。如前所述，廣播和 AWS 之間或 AWS 內部的網路問題可能會導致在錄製串流時遺失某些資料。在這些情況下，Amazon IVS 會將即時串流優先於錄製。透過串流工具進行本機錄製，可提供備援。

建議您定期檢查 OBS Studio 更新並更新至最新版本。(例如，如果您收到「無法連線至伺服器」錯誤，則可能正在使用不支援 RTMPS 的舊版 OBS Studio。)

## 使用 FFmpeg 軟體透過 RTMPS 串流錄製的視訊
<a name="ffmpeg-rtmps"></a>

請遵循下列步驟：

1. 下載並安裝 FFmpeg：[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)。

1. 將 `$VIDEO_FILEPATH` 設定為要串流 MP4 影片的位置：

   ```
   VIDEO_FILEPATH=/home/test/my_video.mp4
   ```

1. 將 `STREAM_KEY` 設定為您的 StreamKey **值**：

   ```
   STREAM_KEY=sk_us-west-2_abcd1234efgh5678ijkl
   ```

1. 將 `INGEST_ENDPOINT` 設定為 **ingestEndpoint** (從 AWS CLI 進行)：

   ```
   INGEST_ENDPOINT=a1b2c3d4e5f6.global-contribute.live-video.net
   ```

1. 開始使用以下終端命令進行串流 (這是全部一行)：

   ```
   ffmpeg -re -stream_loop -1 -i $VIDEO_FILEPATH -r 30 -c:v libx264 -pix_fmt yuv420p -profile:v main -preset veryfast -x264opts "nal-hrd=cbr:no-scenecut" -minrate 3000 -maxrate 3000 -g 60 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmps://$INGEST_ENDPOINT:443/app/$STREAM_KEY
   ```

   *請注意，上述命令是一個範例。對於生產串流，請根據您的需要調整參數。*

## 使用 FFmpeg 軟體透過 SRT 串流錄製的視訊
<a name="ffmpeg-srt"></a>

1. 下載並安裝 FFmpeg：[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)。如果您是使用舊/編譯版本的 FFmpeg，請使用 `--enable-libsrt` 標記建置新版本。

1. 確認 FFmpeg 是否支援 SRT：執行下列命令，並檢查輸出結果中是否包含 `libsrt`。如未顯示 `libsrt`，請重建或取得支援 SRT 的較新版 FFmpeg。

   ```
   ffmpeg -version | grep enable-libsrt
   ```

1. 將 `$VIDEO_FILEPATH` 設定為要串流 MP4 影片的位置：

   ```
   VIDEO_FILEPATH=/home/test/my_video.mp4
   ```

1. 將 `STREAM_KEY` 設定為您的 StreamKey **值**：

   ```
   STREAM_KEY=sk_us-west-2_abcd1234efgh5678ijkl
   ```

1. 將 `INGEST_ENDPOINT` 設定為您的**端點** (從 `srt` 物件下的 AWS CLI 取得)：

   ```
   INGEST_ENDPOINT=a1b2c3d4e5f6.srt.live-video.net
   ```

1. 將 `PASSPHRASE` 設定為您的**密碼短語** (從 `srt` 物件下的 AWS CLI 取得)。只有在頻道未啟用不安全的擷取時，才使用密碼短語。

   ```
   PASSPHRASE=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ
   ```

1. 開始使用以下終端命令進行串流 (這是全部一行)：

   ```
   ffmpeg -re -i $VIDEO_FILEPATH -c copy -f mpegts "srt://$INGEST_ENDPOINT:9000?streamid=$STREAM_KEY&passphrase=$PASSPHRASE”
   ```