在从大唐讯士编码器拉取rtsp流并编码成flv推送时,ffmpeg经常出现无反应和出错退出的现象。使用vlc player测试没问题。
在ffmpeg出错时,看到以下错误:
[aac @ 000001bed96fa240] Too many bits 8832.000000 > 6144 per frame requested, clamping to max
[libx264 @ 000001bed973bdc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512
[libx264 @ 000001bed973bdc0] profile High, level 3.1, 4:2:0, 8-bit

以及:
Failed to update header with correct duration.
Failed to update header with correct filesize.

所以原因是在合成flv文件结束时,ffmpeg用该文件时长和大小值生成文件头(添加到文件开头)。但是在传输流时,就不存在文件时长和大小这两个参数,无法生成该文件头,所以就会出现这种问题。
解决办法是在编码参数中添加一个no_duration_filesize的标志,如下:
... -f flv -flvflags no_duration_filesize "..."

至此解决。

标签: none

添加新评论