我目前正在使用 FFMPEG 在虛擬 CENTOS 伺服器上進行串流傳輸。我使用以下腳本串流到 YouTube 直播。
ffmpeg -re -i program.01.mp4 -flags +global_header -acodec libmp3lame -ac 1 -ar 44100 -ab 192k -s 1280x720 -vcodec libx264 -pix_fmt yuv420p -g 60 -vb 1700k -profile:v baseline -preset:v faster -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/xxxxx"
我之前使用相同的 FFMPEG 串流腳本在專用 CENTOS 伺服器上進行串流傳輸一年多,沒有出現任何技術問題。
我嘗試在虛擬伺服器上使用完全相同的 FFMPEG 腳本。當我使用 1700k 編碼速度時 - 我在輸出中收到以下錯誤:
[flv @ 0x56da380] Failed to update header with correct duration.
[flv @ 0x56da380] Failed to update header with correct filesize.
YouTube 提取器也抱怨輸入流(來自 CENTOS 伺服器)很慢且流會緩衝。
我已經檢查了虛擬CENTOS伺服器可以存取的可用輸出頻寬。
- 下載:57.12 Mbit/s
- 上傳:96.57 Mbit/s
我被迫使用低得多的視訊編碼速度和輸出大小
ffmpeg -re -i program.01.mp4 -f-flags +global_header -acodec libmp3lame -ac 1 -ar 44100 -ab 128k -s 640x360 -vcodec libx264 -pix_fmt yuv420p -g 60 -vb 425k -profile:v baseline -preset:v faster -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/xxxxx"
我不知道問題出在哪裡,因為我可以獲得足夠的所需頻寬。