我正在通过带有ffmpeg的rtmp进行实时流式传输,并且我拥有tpad和AF可以为文件的视频和音频添加填充。
我的ffmpeg版本
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/root/bin --enable-libfdk-aac --enable-gpl --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libtheora --enable-openssl --enable-nonfree
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
示例命令:
ffmpeg -re -i https://my-cdn.com/video.mp4 -filter_complex "tpad=start_duration=10:stop_duration=15" -af "adelay=10000|10000" -maxrate 2M -crf 24 -bufsize 6000k -c:v libx264 -preset superfast -tune zerolatency -strict -2 -c:a aac -ar 44100 -f flv rtmp://stream.example.com/live/some-channel-id
现在,它适用于许多视频,但有时我会得到:
[flv @ 0x559c59067700] Failed to update header with correct duration.170.4kbits/s speed=1.04x
[flv @ 0x559c59067700] Failed to update header with correct filesize.
发生这种情况时,"tpad=start_duration=10:stop_duration=15" -af "adelay=10000|10000"
将被忽略,不再生效。
还有其他人遇到过这个问题吗?您现在如何解决它?
或者在转换过程中(我们已经将mov转换为mp4),有没有办法确保文件大小和持续时间正确?