来自静态图像和音频的 ffmpeg 直播

ffmpeg livestream from static image and audio

我正在尝试使用静态图像和音频文件通过 ffmpeg 进行直播。 ffmpeg 命令是这样的

ffmpeg -re -loop 1 -f image2 -i '/tmp/11.jpg' -f lavfi -i amovie=/tmp/5117.mp3:loop=999 -video_size 600x480 -c:v libx264 -x264-params keyint=60 -bufsize 500k -c:a aac -ar 44100 -b:a 128k -r 30 -g 60 -pix_fmt yuv420p -f flv "rtmp://"

/tmp/11.jpg 由另一个进程生成,每秒更新两次。 ffmpeg命令看起来不对,首先,它显示这样的状态

frame= 85 fps=9.4 q=29.0 size= 2261kB time=00:02:24.19 bitrate= 128.4kbits/s speed= 16x

如你所见,16x不好,1x才是直播的正确值。然后,过了一会儿,它显示了很多这样的警告日志

[flv @ 0x322bd60] Non-monotonous DTS in output stream 0:1; previous: 335993, current: 297752; changing to 335993. This may result in incorrect timestamps in the output file.

请帮忙修复。

电影过滤器不会重置时间戳,这会导致 FLV 多路复用器发出 DTS 警告。您可以使用实时过滤器减慢输出视频处理速度。

ffmpeg -loop 1 -f image2 -i '/tmp/11.jpg'
  -f lavfi -i amovie=/tmp/5117.mp3:loop=999,asetpts=N/SR/TB
  -vf realtime,scale=600:480,format=yuv420p
  -r 30 -g 60 -c:v libx264 -x264-params keyint=60 -bufsize 500k
  -c:a aac -ar 44100 -b:a 128k -f flv "rtmp://"