将 mp4 视频文件传输到 v4l2 设备会降低 ffmpeg 中的帧速率

将 mp4 视频文件传输到 v4l2 设备会降低 ffmpeg 中的帧速率

我正在尝试在多个 v4l2 环回设备上播放 10fps 的视频文件。虽然以下命令会在视频设备上输出视频,但它不会保持帧速率。ffmpeg 报告的帧速率(和速度)从 1-2 fps(速度 ~ 0.100x-0.200x)开始,然后向 1fps 和 1x 速度移动,但从未达到这些速度。根据输出数量,如果我仅使用 2-3 个 v4l2 设备,它可能会稳定在 9.5 fps 和 0.950x 速度,或者如果我使用所有 8 个设备,它可能会稳定在 ~6fps 和 0.600x 速度。

什么原因导致了这种现象?我该如何解决它?

ffmpeg -i ~/video.mp4 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video2 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video3 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video4 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video5 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video6 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video7 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video8 \

答案1

-re您必须通过在之前添加参数来告诉 ffmpeg 您希望它实时运行-I。否则它将尽可能快地运行。

ffmpeg -re -i ~/video.mp4 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video2 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video3 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video4 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video5 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video6 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video7 \
-f v4l2 -r 10 -pix_fmt yuyv422 /dev/video8

相关内容