我目前正在使用 FFMPEG 在虚拟 CENTOS 服务器上进行流式传输。我使用以下脚本流式传输到 youtube live。
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"
由于我使用的带宽超过了所需的带宽,所以我不明白问题可能出在哪里。