本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 Kinesis 影片串流播放媒體
開啟 Kinesis Video Streams 主控台
從 Raspberry Pi 傳送的視訊串流,會出現在主控台。
注意
可能需要幾秒鐘的時間,影片才會出現在主控台中。
串流播放後,您可以在 主控台中實驗下列功能:
-
在 Video preview (視訊預覽) 區段中,請使用導覽控制,以倒轉或向前快轉串流。
-
在串流資訊區段中,檢閱串流的轉碼器、解析度和位元速率。Raspberry Pi 上的解析度和位元速率值會刻意設為低,以將本教學課程的頻寬使用量降至最低。
若要檢視為串流建立的 Amazon CloudWatch 指標,請選取在 CloudWatch 中檢視串流指標。
-
在 Data retention period (資料保留期間) 下,請注意視訊串流的保留期間為 1 天。您可以編輯此值,將其設定為 No data retention (無資料保留),或將值設定為從一天到數年。
-
在伺服器端加密下,請注意您的資料正在使用由 AWS Key Management Service () 維護的金鑰進行靜態加密AWS KMS。
播放問題
以下是一些經常遇到的播放問題,以及如何進行故障診斷。
沒有媒體,但日誌中有 PERSISTED Acks
如果您在日誌中看到 PERSISTED Acks,Kinesis Video Streams 已成功擷取並儲存 上傳的媒體kvssink
。從 Kinesis Video Streams 收到的 Acks 如下所示。在 JSON 中,查看"EventType"
金鑰的值。
{"EventType":"RECEIVED","FragmentTimecode":252200,"FragmentNumber":"12345678901234567890123456724587702494771079511"} {"EventType":"BUFFERING","FragmentTimecode":252467,"FragmentNumber":"12345678901234567890123456781729223736853277017"} {"EventType":"RECEIVED","FragmentTimecode":252467,"FragmentNumber":"12345678901234567890123456781729223736853277017"} {"EventType":"BUFFERING","FragmentTimecode":253000,"FragmentNumber":"12345678901234567890123456738870744847093249408"} {"EventType":"PERSISTED","FragmentTimecode":252200,"FragmentNumber":"12345678901234567890123456724587702494771079511"} {"EventType":"PERSISTED","FragmentTimecode":252467,"FragmentNumber":"1234567890123456789012345671729223736853277017"}
解決方法:
在 Kinesis Video Streams 主控台中等待一兩分鐘,然後使用向右雙箭頭。如果沒有媒體出現,請確認您的串流正在傳送至正確的區域,並檢閱串流名稱的拼寫。您可以在日誌中找到此資訊。
提供區域給 kvssink 如需 kvssink 如何決定要使用的區域的詳細資訊,請參閱 。
媒體在 中載入需要很長的時間 AWS Management Console
由於網路頻寬不足或裝置受限,媒體可能會在主控台中緩慢載入,但也可能與影片編碼和分段相關。
影片編碼基本概念:
-
H.264 和 H.265 編碼器使用關鍵影格 (I-Frame) 和預測影格 (P-Frame) 以實現高效壓縮。
-
關鍵影格包含完整的影像資料,而 P 影格僅包含先前影格的變更。
-
「關鍵影格間隔」會決定關鍵影格在影片串流中的發生頻率。
串流中的分段:
-
在 Kinesis Video Streams 中,新片段會從每個關鍵影格開始。如需詳細資訊,請參閱Kinesis Video Streams 資料模型。
-
片段長度 (以秒為單位) 可估計為:關鍵影格間隔 ÷ 影格率
範例:
對於關鍵影格間隔為 30 且影格速率為 15 fps 的串流:
片段長度 = 30 ÷ 15 = 2 秒
由於關鍵影格間隔較大,較長的片段會增加串流媒體的延遲。
解決方法:
為了改善載入時間,請考慮減少關鍵影格間隔。這將建立較短的片段,減少延遲,但也會增加影片檔案的大小。
對於 x264enc
GStreamer 元素,您可以透過 key-int-max
屬性明確設定關鍵影格間隔:
x264enc bframes=0 key-int-max=60
檢閱日誌輸出時,請注意上傳用戶端從 Kinesis Video Streams 接收 ACKs 的頻率。產生的關鍵影格越多,傳回ACKs 越多。
媒體失真或有成品
若要疑難排解此問題,請確定所有纜線都已緊密連接。檢閱攝影機模組的輸出 libcamera-hello
(或raspistill
舊版 Pi 攝影機的輸出)。
在您的 GStreamer 管道中,將 取代kvssink
為 autovideosink
或 matroskamux
和 filesink
。例如:
... x264enc tune=zerolatency speed-preset=ultrafast bframes=0 key-int-max=60 byte-stream=true ! h264parse ! matroskamux ! filesink location=output.mkv
檢閱 的輸出檔案,filesink
或是使用 時開啟的媒體播放器autovideosink
,以查看成品是否也存在。
同時檢閱下列管道的輸出:
gst-launch-1.0 autovideosrc ! videoconvert ! autovideosink
將元素新增至管道,例如去彎曲
檢閱攝影機支援的輸出轉碼器,並視需要調整元素。
例如,如果您的 USB 攝影機僅支援 JPEG 輸出,則您將需要使用 jpegparse
和 jpegdec
元素來轉換媒體,然後再使用 將其編碼為 H.264x264enc
。在 GStreamer 論壇上搜尋具有類似管道和/或網路攝影機設定的其他使用者的協助。