【发布时间】:2020-03-23 22:14:25
【问题描述】:
我正在尝试通过 OpenCV 在 Python 中处理视频,然后将每个帧发送到虚拟相机(即 v4l2loopback)。我已经看到有人询问 OpenCV 输出在何处通过管道传输到 ffmpeg 并保存到文件中,还有其他问题是使用 ffmpeg 将视频文件通过管道传输到 v4l2,但没有问题将这两者结合在哪里。我可以自己做以上两件事中的任何一件,但不能结合起来。
我的 Python 代码使用子进程将每个帧通过管道传输到 ffmpeg。用于将 OpenCV 的输出通过管道传输到 .mp4 文件的 ffmpeg 命令是
ffmpeg -y -f rawvideo -vcodec rawvideo -s 1280x720 -pix_fmt bgr24 -i - -vcodec libx264 -crf 0 -preset fast output.mp4
这行得通,我已经测试过了。
将视频文件通过管道传输到 v4l2 虚拟摄像机的 ffmpeg 命令是
ffmpeg -re -i input.mp4 -map 0:v -f v4l2 /dev/video0
这也有效,我已经测试过了。
我尝试结合以上两个命令并想出了
ffmpeg -y -f rawvideo -vcodec rawvideo -s 1280x720 -pix_fmt bgr24 -i - -vcodec libx264 -crf 0 -preset fast -map 0:v -f v4l2 /dev/video0
但我收到以下错误
[NULL @ 0x55a12fcc60] 无法为 '' 找到合适的输出格式 : 无效参数
如果有人能帮我解决这个问题,我会很高兴。
谢谢。
【问题讨论】: