全部產品
Search
文件中心

Object Storage Service:LiveChannel常見問題

更新時間:Feb 28, 2024

本文主要介紹使用LiveChannel過程中遇到的常見問題及解決方案。

OSS livechannel推流過程

下圖為OSS livechannel推流過程圖解,瞭解推流過程後,有助於排查livechannel推流過程中遇到的問題。

更多詳情請參見PutLiveChannelPutLiveChannelStatus

案例:錄製M3u8缺失

問題分析:預設錄製成品的M3u8隻有最後3片,遵循了HLS協議的預設規則。

解決方案:使用PostVodPlaylist介面將指定時間範圍內的ts檔案匯聚到M3u8索引。

  • EndTime必須大於StartTime,且時間跨度不能大於1天。

  • OSS會查詢指定時間範圍內的所有指定LiveChannel推流產生的ts檔案,並將其拼裝為一個播放清單。

案例:錄製的M3u8檔案失敗

問題分析:錄製的M3u8檔案成功推流到OSS才算錄製成功。

解決方案:建議到用戶端抓包查看是否有publish succees的標誌,此標誌表示與OSS音頻包互動成功。所以出現用戶端有推流記錄,但是沒有錄製視頻的情況,可以嘗試抓包分析。

案例:用戶端無法推流到OSS

使用ffmpeg推流不成功:

ffmpeg -re -i 0_20180525105430445.aac -acodec aac -strict -2 -f flv rtmp://xxx.oss-cn-beijing.aliyuncs.com/live/test_1000?Expires=1540458859&OSSAccessKeyId=LTAlujianb****&Signature=qwh31xQsanmao6ygCFJgo****%3D&playlistName=playlist.m3u8

解決方案:

  • 使用ffmpeg推流不成功時,建議用最原始的命令推流,不添加複雜的參數。

  • 推流URL中包含and符號(&)時,請使用雙引號(" ")將整個URL括起來。例如,ffmpeg -re -i 0_20180525105430445.aac -acodec aac -strict -2 -f flv "rtmp://xxx.oss-cn-beijing.aliyuncs.com/live/test_1000?Expires=1540458859&OSSAccessKeyId=LTAlujianb****&Signature=qwh31xQsanmao6ygCFJgo****%3D&playlistName=playlist.m3u8"

  • 嘗試更換為OBS進行推流測試,否則無法確認是否因ffmpeg問題導致的推流失敗。

如果推流後延時較長,可以在PutLiveChannel介面中調整FragDurationFragCount參數。

案例:錄製M3u8檔案卡頓

當轉儲類型為HLS時,寫入當前ts檔案的音視頻資料時間長度達到FragDuration指定的時間長度後,OSS會在收到下一個主要畫面格時切換到下一個ts檔案。如果指定max(2*FragDuration, 60s)後仍未收到下一個主要畫面格,OSS將強制切換檔案,此時可能引起播放卡頓。

案例:錄製M3u8檔案沒有音頻或視頻

以下幾種情況會出現音頻或者視頻沒有錄製的情況:

  • 沒有發送AVC header或者AAC header,請通過抓包查看。

  • RTMP message長度小於2或者sequence header過小。

  • 音頻Message超過緩衝區大小。

  • codec_ ctx是解碼內容相關的關鍵資訊,如果攜帶的音視頻資料異常,也會導致錄製失敗。

案例:ffmpeg推流到OSS錄製沒有音頻

解決方案:

  • 直接查看ffmpeg記錄的日誌,確定用戶端是否已發送aac_header

  • 在用戶端進行RTMP抓包,查看用戶端是否已發送aac_header