rtmp 或 fifo 文件上的 ffmpeg h264_v4l2m2m 编码器没有视频输出

rtmp 或 fifo 文件上的 ffmpeg h264_v4l2m2m 编码器没有视频输出

我正在使用 ffmpeg 将 /dev/video0 流式传输到 rtmp 服务器。我使用 -codec:v h264_v4l2m2m 作为编码器。

无论我怎么尝试,流中都无法输出视频。在命令行上,如果我将 -codec:v h264_v4l2m2m 替换为 -codec:v h264_omx,我就能获得视频。

如果我将输出捕获为视频文件,则可以获得视频。但如果我将输出捕获为 fifo 文件,则同样得不到视频。

这似乎是 ffmpeg v6.0 中一个众所周知的错误,但为什么没有人修复这个问题?还是我在命令上犯了一些重大错误?

解决方法是,如果我使用管道,那么我会得到具有相同 -codec:v h264_v4l2m2m 的视频。但是管道在几个小时后会在视频上产生一些瑕疵。

发生了什么事?如何在命令行上使用一些神奇的标志来解决这个问题?

以下是示例命令行:

没有视频:

ffmpeg -re -input_format mjpeg -video_size 1280x720 -framerate 30 -thread_queue_size 1024 -i /dev/video0 -f alsa -ac 2 -thread_queue_size 2048 -i hw:CARD=MS2109,DEV=0 -strict -2 -codec:v h264_v4l2m2m -preset ultrafast -x264opts "nal-hrd=cbr" -b:v 2500k -minrate 2500k -maxrate 2500k -bufsize:v 3750k -ac 2 -ar 44100 -codec:a aac -b:a 128k -tune zerolatency -vf "format=yuv420p" -r 30 -g 30 -threads 0 -f flv rtmp://IP/live/KEY

有视频,但是几小时后出现瑕疵:

ffmpeg -re -input_format mjpeg -video_size 1280x720 -framerate 30 -thread_queue_size 1024 -i /dev/video0 -f alsa -ac 2 -thread_queue_size 2048 -i hw:CARD=MS2109,DEV=0 -strict -2 -codec:v h264_v4l2m2m -preset ultrafast -x264opts "nal-hrd=cbr" -b:v 2500k -minrate 2500k -maxrate 2500k -bufsize:v 3750k -ac 2 -ar 44100 -codec:a aac -b:a 128k -tune zerolatency -vf "format=yuv420p" -r 30 -g 30 -threads 0 -f flv - | ffmpeg -i - -c copy -f flv rtmp://IP/live/KEY

我的系统信息:

Raspberry Pi 4 B+ 操作系统:Raspberry Pi OS(Buster 32 位) 内存:4GB

ffmpeg(v4.x、v5.x、v6.x):

配置:--extra-version=ffmpeg-2023 --pkg-config=/usr/bin/pkg-config --prefix= --incdir=/usr/include/arm-linux-gnueabihf --libdir=/usr/lib/arm-linux-gnueabihf --bindir=/home/pi/ffmpeg_build/ffmpeg-6.0/bin --pkg-config-flags=--static --extra-ldflags=-L/home/pi/ffmpeg_build/ffmpeg_build/lib --extra-libs='-lpthread -lm -latomic' --cpu=arm1176jzf-s --arch=armhf --target-os=linux --disable-shared --enable-static --enable-ffplay --enable-ffprobe --enable-nonfree --enable-gmp --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --启用-libmp3lame --启用-libopencore-amrnb --启用-libopencore-amrwb --启用-libopus --启用-libsoxr --启用-libvorbis --启用-libvpx --启用-libzimg --启用-libwebp --启用-libx264 --启用-libx265 --启用-mmal --启用-omx --启用-omx-rpi --启用-version3 --启用-pthreads --启用-openssl --启用-protocol=libsrt --启用-libsrt --启用-libpulse --启用-v4l2-m2m --启用-indev=alsa --启用-outdev=alsa --启用-swscale

相关内容