疑難排解常見問答集 - Amazon Interactive Video Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

疑難排解常見問答集

本文件說明 Amazon Interactive Video Service (IVS) 的最佳實務和疑難排解提示。使用 IVS 時,可能會發生意外或非預期的行為。這些行為可能發生在串流程序中從廣播到內容播放的不同時間點:

意外或非預期行為可能發生在串流程序中從廣播到內容播放的不同時間點。

如需支援和其他 Amazon IVS 資源的相關資訊,請參閱 Resources and Support (資源和支援)。

廣播和編碼

本節探討關於廣播、編碼和串流至 IVS 的第一哩情況的問題。這些行為會在內容到達 IVS 伺服器之前發生。

主題:

什麼是串流匱乏?

「串流匱乏」是當您傳送內容至 IVS,也就是 IVS 擷取內容時,內容封包傳遞發生延遲或停止的情況。如果 IVS 在提取時未收到編碼裝置公告它在特定時間範圍內會傳送的預期位元量,即可視為匱乏事件。廣播者的編碼器、本機網路情況和/或透過公共網際網路在編碼裝置及 IVS 之間進行傳輸經常會造成匱乏事件。

從檢視者的角度來看,匱乏事件會導致影片延遲、緩衝或凍結。串流匱乏事件根據其性質,發生的時間可短 (不到 5 秒) 可長 (數分鐘)。

為了允許監控飢餓事件,IVS 會以 Amazon 事件的形式傳送飢餓事件;請參閱範例:將 Amazon EventBridge 與 Amazon IVS 搭配使用中的串流 Health 狀態變更。 EventBridge 當串流進入或離開匱乏狀態時,系統就會傳送這些內容。根據使用案例,您可以採取適當的行動,例如通知廣播者和檢視者該間歇性串流情況。

如需其他飢餓監控工具,請參閱監控 Amazon IVS 低延遲串流、IVS ListStreamsAPI 端點 (依健康狀態篩選) 和 IVS GetStream端點 (以分析個別串流)。另請參閱如何監控串流匱乏事件?

為什麼串流會突然停止?

以下是串流突然停止 (即串流工作階段結束) 最常見的原因:

  • 遺失擷取的資料:當串流工作階段的擷取作業完全停止 (沒有資料擷取至 IVS) 超過 30 秒,IVS 擷取伺服器將終止 IVS 串流工作階段。這 30 秒的時間可讓廣播者重新連接擷取伺服器。不過,在某些情況下 (例如切換網路),您無法重新連線至現有的串流工作階段,因為 RTMPS 的 TLS 交握已中斷。這種情況的常見根本原因包括網路問題 (例如廣播裝置和 IVS 之間的壅塞)、廣播裝置完全無法連接網際網路,或廣播裝置無法產生內容區段 (FLV 標籤)。

    串流經常會在發生串流匱乏事件時中斷;匱乏事件會在傳入的資料停止時觸發。如果先後傳送匱乏開始事件和串流結束事件 (未傳送匱乏結束事件),這通常表示串流已經因為沒有資料傳送至 IVS 而結束。

  • IVS StopStream 端點 — 在 IVS 串流工作階段期間,如果進行 StopStreamAPI 呼叫,IVS 串流工作階段將結束。 StopStream 端點會中斷來自 IVS 擷取伺服器的傳入 RTMPS 串流的連線。根據所使用的編碼軟體/硬體,系統可能會嘗試進行新的串流工作階段。

  • 編碼器錯誤:當編碼程序期間發生錯誤時,部分軟體/硬體編碼器會中斷串流工作階段。從 IVS 的角度來看,這些中斷是廣播者刻意中斷連線的情況。然而,在編碼日誌中,這可視為串流因為意外錯誤而中斷連線。

如果我在串流時切換網路,會發生什麼情況?

當廣播公司切換網路 (例如,從 WiFi 行動網路) 時,正在進行的 RTMPS 連線會中斷連線。儘管廣播者的網際網路連線可能會在 3-4 秒後重新建立,新連線會因為網路切換的緣故擁有新的 IP 地址,同時產生新的 RTMPS 連線。在切換期間,上一個 RTMPS 連線不會完全中斷:編碼器不會傳送中斷連線訊息給 IVS。因此,IVS 會等待 30 秒,讓上一個 RTMPS 連線重新連線,這會讓新網路上的新 RTMPS 串流無法連線至 IVS。

若要在網路之間加快切換速度,建議您在裝置切換網路時使用 IVS StopStream端點關閉先前的串流工作階段。在這個案例中,當廣播裝置連線到新的網路時,廣播裝置可以呼叫 StopStream 端點來結束目前處於休眠狀態的串流。成功 StopStream 通話後,廣播裝置可以在新網路上開始新的串流工作階段,而無需等待 30 秒。

我要如何讓 IVS 進行多區域備援?

IVS 中的備援能以多種方式達成;請參閱 IVS Security (IVS 安全性) 中的 Resilience (復原功能)。

IVS 被分成不同網路平面:控制和資料。

  • 控制平面是區域性 (以 AWS 區域為基礎) 平面,且會儲存 IVS 資源相關資訊 (頻道、串流金鑰、播放金鑰對和錄製組態)。

  • 資料平面不限於 AWS 區域,而是將資料從擷取傳輸到輸出的網路。舉例來說,即使頻道在 us-west-2 區域中建立,串流至該頻道的影片可能不會通過 us-west-2。

另請參閱 Global Solution, Regional Control (全球解決方案、區域控制)。考慮以下兩種情況:

  • 如果只使用一個控制平面區域 (例如 us-east-1):如果特定 AWS 控制區域發生降級或中斷,IVS 控制平面可能會在建立、讀取、更新或刪除任何下列內容時發生延遲或錯誤:頻道、串流金鑰、播放金鑰對或錄製組態。在中斷期間嘗試開始新串流可能會造成啟動串流工作階段時發生更多延遲或錯誤。根據降級的嚴重性,可能可以繼續廣播至已有進行中串流的頻道。

    如果已啟用播放授權,目前的檢視者可能可以繼續播放進行中的串流,但如果播放金鑰對授權有問題,新的檢視者可能會無法開始檢視。如果未啟用播放授權,目前和新的檢視者應該能檢視進行中的串流。

    IVS 自動錄製到 S3 功能也會因為中斷事件而中斷。

    如發生區域中斷事件,IVS 控制平面不會自動容錯移轉到其他 AWS 區域。

  • 如果使用兩個控制平面區域 (例如 us-east-1 和 us-west-2),且第二個區域為主要區域無法使用時的容錯移轉區域,由於 IVS 本身並不支援區域控制平面容錯移轉,因此在控制平面區域發生問題時,針對該控制平面開始進行的新串流或呼叫可能會發生問題。不過,資料平面可能不會受到影響,因此該控制平面區域的進行中串流會繼續運作,而不會發生問題。將控制平面移動到次要 (容錯移轉) 區域必須在應用程式端完成。您可以撰寫自訂實作邏輯來處理控制平面容錯移轉。我們沒有如何管理區域頻道容錯移轉的正式指導方針。

    IVS 架構透過區隔影片資料平面和區域控制平面來增加復原能力:進行中的即時串流在區域控制平面發生故障時應該幾乎不會中斷。IVS 可維持 SLA 為 99.9% 的執行時間,並致力於為客戶確保其基礎架構的穩定性 (請參閱我們的 SLA)。

如何疑難排解 IVS Web 廣播 SDK 工作階段?

IVS Web 廣播 SDK 的運作方式與一般 IVS RTMPS 擷取工作階段稍有不同。Web 廣播 SDK 會利用 WebRTC 通訊協定串流至 IVS 端點。內容進入 IVS 端點後,就會對其進行處理,並將其重新封裝/轉碼到 HLS 輸出中以供檢視。

由於 Web 廣播 SDK 的性質,請注意下列編碼行為疑難排解提示:

  • 關閉廣播裝置上無需在廣播工作階段期間開啟的所有標籤/程式。無關的標籤/程式可以使用運算資源 (例如 CPU、RAM 和網路),這可能會導致廣播應用程式的效能不佳。對於無法關閉的標籤/程式,請確保其沒有使用不必要的運算資源量。

  • 確保裝置的上傳速度超過 200 Kbps。(這在 Web 廣播 SDK 的其中一個已知問題中註明。) 若要評估上傳速度,請開啟廣播裝置的任務管理員以分析串流時可用的網路。如果上傳速度/位元速率低於預期或期望,請評估其他可能會消耗頻寬的標籤/程序。另外,請查看本機網路上可能正在耗用大量頻寬的其他機器。

  • 如果 CPU 使用率出現隨機峰值,則請查看機器的任務管理員以了解哪些程序可能正在耗用 CPU。隨機導致出現 CPU 使用率問題的常見服務是在機器上執行定期掃描的防病毒軟體。

  • 嘗試透過 https://stream.ivs.rocks/ 進行串流,以協助隔離環境,並確保應用程式邏輯不會造成不良行為。此網站由 IVS 操作,是一個穩定的測試環境,用於評估與 Web 廣播 SDK 整合的任何部分是否是不良行為的根本原因。

  • 嘗試使用 Google Chrome 的 WebRTC-internals (見下文)。

如何使用 Google Chrome 的 WebRTC-internals 指標來評估 IVS Web 廣播 SDK 工作階段?

透過 IVS Web 廣播 SDK 進行串流時,在編碼和傳送廣播期間可能會發生各種行為。請依照下列步驟進行疑難排解或收集廣播裝置上工作階段的相關資訊:

  1. 在 Google Chrome 中,打開廣播網頁。

  2. 打開一個新的 Chrome 索引標籤,然後轉至 chrome://webrtc-internals/ (將其完全複製)。

  3. 在原始廣播網頁索引標籤中,啟動 Web 廣播 SDK 工作階段並讓工作階段執行,直到觀察到行為。

  4. 一旦觀察到行為,請切換到 chrome://webrtc-internals/ 標籤 (請勿結束廣播工作階段),並確保顯示正確的網頁:

    Chrome webrtc-internals 標籤,證明顯示正確的頁面。
  5. 開啟畫面最上方的建立傾印可擴充區段。

  6. 選取畫面頂端的 [下載 PeerConnection 更新和統計資料] (位於 [建立傾印] 下方),即可從相關工作階段下載.txt檔案。

  7. 下載之後,該檔案將顯示 WebRTC 連線的歷史檢視。您可以在各種工具中檢視,或將其傳送給 AWS Support 團隊進行進一步分析。

監控和事件

本節探討關於 IVS 監控、指標和事件的問題。

主題:

如何監控串流匱乏事件?

我們建議採取下列方法來監控串流匱乏事件:

  • Amazon EventBridge 搭配 Amazon IVS — 當串流飢餓事件開始或結束時,IVS 會產生串流運作狀態變更事件。 EventBridge 使用 Amazon EventBridge 目標和規則,您可以使用這些串流飢餓事件在發生串流飢餓時取得警示。如需目標和規則的詳細資訊,請參閱 Amazon EventBridge 使用者指南

  • 監控 Amazon IVS 低延遲串流功能:在即時串流工作階段期間,系統會錄製資料並透過 IVS 串流運作狀態分析提供資料。這包括關於編碼器組態、擷取指標和串流工作階段事件的資訊。在監控進行中串流或追溯評估串流時,該資料就能派上用場。您可以使用 IVS 主控台或 API 來識別經歷過匱乏的串流。即使頻道遭到刪除,串流工作階段資料也可以保留 60 天,適用於識別過去有匱乏事件的串流。

  • 依 Health 全狀況篩選串流 — 使用 IVS 主控台或 IVS ListStreamsAPI 端點,您可以使用health篩選器尋找處於狀態的串流工作階段。STARVING此外,的 IVS CloudWatch 量度ConcurrentStreams包含一個Health維度,您可以用來收集處於串流飢餓狀態的串流總數。請參閱監控 Amazon IVS 低延遲串流功能

  • 您可以使用 IVS GetStream端點來分析個別串流。

另請參閱什麼是串流匱乏?

如何使用 Amazon CloudWatch 監控 IVS 服務配額?

您可以使用 Amazon CloudWatch 主動監控/管理 IVS 服務配額。請參閱 IVS Service Quotas。本文件包含建立使用狀況測量結果 CloudWatch警示的相關資訊。

我們建議您設定適當的 SNS 主題,以便在觸發警示時通知正確的個人/群組。如果觸發警示,且配額可調整,您應該使用新的值來請求提高服務配額。如需有關請求提高配額的資訊,請參閱 IVS Service Quotas

如何使用 IVS 串流運作狀態診斷串流不穩定性?

建議您使用 IVS 串流運作狀態儀表板來評估串流不穩定性。指示位於監控 Amazon IVS 低延遲串流功能

儀表板具備影片位元速率、影格率和音訊位元速率的時間序列圖;範例如下。另外,您可以單擊查看 CloudWatch以查看 Amazon 中的數據 CloudWatch。

以下將討論幾種情況。

低網際網路頻寬或網際網路壅塞

在此情況下,即使調低位元速率,串流也相對不穩定。廣播者和 ISP 之間或 ISP 和 IVS 之間頻寬不足,或是連接 IVS 的網路路徑發生問題。若要解決此問題,請確認沒有其他網路程序正在使用頻寬,或聯絡 ISP 進行網路診斷。

IVS 串流運作狀態儀表板

在 IVS 串流運作狀態儀表板上檢查是否有低網際網路頻寬或網際網路壅塞狀況。

CloudWatch:

檢查網際網路頻寬低或網際網路擁塞是否開啟 CloudWatch。

位元速率過高

較高的位元速率不一定代表較好的品質;在這裡,高位元速率會造成不穩定。在許多情況下,由於網路壅塞,高位元速率會造成廣播時的串流不穩定。請遵循 解析度/位元速率/FPS 列出的位元速率上限。

IVS 串流運作狀態儀表板

在 IVS 串流運作狀態儀表板上檢查位元速率是否過高。

CloudWatch:

檢查是否開啟過高位元率 CloudWatch。

網路或硬體問題

影片編碼需要大量運算資源,有時候執行影片編碼的機器無法滿足負載。在這種情況下,請驗證機器是否出現過載情況 (一次執行過多工作) 以及編碼器是否為最新狀態。您可以考慮切換至使用較少 CPU 的編碼預設集。

IVS 串流運作狀態儀表板

檢查 IVS 串流運作狀態儀表板是否有網路或硬體問題。

CloudWatch:

正在檢查網路或硬體問題 CloudWatch。

位元速率尖峰和下降

有時串流編碼器會嘗試太過智慧並最佳化位元速率,通常是根據壓縮影格的複雜度。如果位元速率快速變動,檢視者可能會因為系統嘗試載入過多資料而遇到緩衝的狀況。請確認啟用固定位元速率 (CBR),此功能可讓串流維持一致的位元速率,無論其影格複雜度為何。請注意,也可能發生下降的情況;這表示機器沒有足夠的 CPU 功率來讓編碼器壓縮影片。

IVS 串流運作狀態儀表板

檢查 IVS 串流運作狀態儀表板是否有位元速率尖峰或下降的狀況。

CloudWatch:

檢查比特率峰值和下 CloudWatch降。

網際網路中斷連線

當廣播裝置遇到網際網路問題,IVS 伺服器會用 30 秒的時間評估是否能重新建立相同的連線。如果未重新建立相同連線,IVS 伺服器會結束串流工作階段。如果網際網路連線中斷,部分編碼器會嘗試重新連線至廣播工作階段,在此情況下會在初始串流結束後開始新的串流工作階段。

IVS 串流運作狀態儀表板

檢查 IVS 串流運作狀態儀表板是否有網際網路中斷狀況。

CloudWatch:

正在 CloudWatch檢查網際網路中斷連線。

串流播放

本節中大部分的資訊為 IVS 播放器 SDK 專屬,無法套用至其他播放器。如需詳細資訊,請參閱 Amazon IVS 播放器

主題:

如何偵錯 IVS 播放器行為?

若要啟用詳細資訊記錄來協助偵錯 IVS 播放器,請使用 setLogLevel 播放器方法。更改播放器的日誌層級來使用 DEBUG 參數;接著 IVS 播放器會產生 IVS 播放器狀態和邏輯的詳細資訊記錄。

若要使用 IVS 播放器快速測試,無論是否啟用 DEBUG 日誌,請使用 https://debug.ivsdemos.com/ 測試網站。如果透過設定選單啟用 DEBUG 日誌,您可以在瀏覽器主控台檢視中查看日誌。

為什麼所有檢視者的播放畫面凍結/停止了?

如果所有檢視者的播放畫面都同時凍結/停止,可能是因為上游行為的問題。通常根本原因是廣播編碼器。

串流匱乏或不良廣播編碼器行為可能同時會影響所有檢視者。如果廣播編碼中斷連線,且新的串流工作階段已開始,所有檢視者會同時停止接收內容。當您評估此行為時,我們建議您使用 監控 Amazon IVS 低延遲串流功能評估串流工作階段。

IVS 播放器緩衝的原因是什麼?

在即時串流影片和音訊播放背景中,「緩衝」表示播放裝置無法下載應播放的內容。緩衝可以透過多種方式建立清單檔案:內容可能會隨機停止和開始 (也稱為卡頓)、內容可能長時間停止 (也稱為凍結),或播放器可能進入 BUFFERING 狀態。

緩衝的原因很多,可以分成三個主要類別:

  • 檢視者端緩衝經常在單一檢視者或一小群檢視者受到緩衝事件影響時發生。這些緩衝事件的根本原因經常源自於本機網路 (LAN) 或播放裝置問題。在本機網路緩慢或裝置問題的情況下,可以透過確保啟用彈性位元速率播放 (ABR)、手動選擇較低品質,或減少其他程式和裝置使用的頻寬,來解決緩衝的問題。

  • 網路層級緩衝:問題出現在本機網路和 IVS 分佈伺服器之間,其他問題則稱為 ISP 層級。在 ISP 層級出現的緩衝行為可能難以排解,因為無法完全查看 ISP。延遲和網路壓力等行為 (例如 ISP 無法處理整體傳入/傳出的流量) 可能導致延遲向檢視者提供內容。

  • 廣播端緩衝:即時串流工作階段的廣播端問題可能導致大規模檢視者緩衝問題。例如,如果廣播裝置停止傳送資料至 IVS,IVS 沒有可傳送至播放器的內容,且 IVS 播放器進入緩衝狀態,無法下載任何內容。在許多情況下,廣播端緩衝事件會造成大部分或所有檢視者同時受到影響。

自動錄製至 Amazon S3

如需詳細資訊,請參閱 Auto-Record to Amazon S3 (自動錄製至 Amazon S3)。

主題:

為什麼會缺少部分錄製內容?

多種原因都可能造成錄製內容遺失。我們建議您使用下列步驟來疑難排解遺失的內容:

  1. 確認為想要的 IVS 頻道啟用 Auto-Record to S3 (自動錄製到 S3):

    1. 主控台:在相關頻道的詳細資訊頁面,於 General configuration (一般組態) 區段中確認 Auto-record to S3 (自動錄製到 S3) 為 Enabled。如果該設定已啟用,請檢查 Recording configuration (錄製組態) 以確認 Storage (儲存體) 和 Recording prefix (錄製前綴) 正確無誤。

    2. CLI:執行 get-channel 並在想要的 IVS 頻道 ARN 中傳遞:

      aws ivs get-channel --arn "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh"

      查看是否傳回 recordingConfigurationArn

  2. 在指定的 S3 儲存貯體中查看特定串流工作階段的錄製內容 (請參閱 S3 前置詞)。記錄工作階段的 S3 key prefix 位於 Amazon 記 EventBridge 錄狀態變更事件中。注意:如果 merge fragmented streams (合併分段的串流) 功能已啟用,部分內容可能會變成其他錄製工作階段。

  3. 如果整體串流持續時間少於 10 秒,或串流內容遺失 (即發生串流匱乏),錄製的內容可能會因為沒有內容產生而遺失。

KMS-S3 加密可以與 S3 的自動記錄搭配使用嗎?

IVS 自動記錄至 Amazon S3 功能不支援 KMS-S3 加密。嘗試使用 KMS-S3 加密時,錄製開始將失敗,並產生錄製開始失敗 EventBridge 事件。建議的因應措施是使用支援的 SSE-S3 加密,預設會在上傳到 Amazon S3 的所有物件上啟用該加密功能。

其他主題

本節探討關於不適用其他分類的主題的問題。

主題:

「待定驗證」錯誤是什麼意思?

使用 IVS 時,可能會出現「您的帳戶正在待定驗證。在驗證程序完成之前,您可能無法透過此帳戶執行請求。如有任何問題,請聯絡 AWS Support。」錯誤。

這表示您使用的 AWS 帳戶必須通過 AWS 驗證,才能使用 IVS。(儘管您的帳戶可以使用其他 AWS 服務,但 IVS 會使用增強驗證方法。)

若要驗證您的 AWS 帳戶,請從 AWS Support Center 聯絡 AWS 帳戶支援 (並提供您收到的錯誤訊息):https://support.console.aws.amazon.com/support/home?#/

我可以預估 IVS 用量的成本嗎?

儘管您無法在串流工作階段之前判斷 IVS 用量的確切成本,您可以在此取得概略的成本預估工具:https://ivs.rocks/calculator。其他定價資訊請見:https://aws.amazon.com/ivs/pricing/