ffmpeg - 我可以欺骗 ffmpeg 让其认为 Python 脚本是相机吗?

ffmpeg - 我可以欺骗 ffmpeg 让其认为 Python 脚本是相机吗?

我想将帧从一个 Python 脚本 (A) 传输到另一个 (B),这样 B 就能以 A 生成帧的速度获取帧。我用 ffmpeg 看到的所有内容都是整个视频,或者从摄像头传输。我想我想要做的是将 Python 脚本视为生成帧的摄像头。

我见过这样的情况:http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/但我不想将输出发送到视频文件,我想用另一个脚本读取它。无论如何,使用该代码时我也遇到了管道损坏错误。

答案1

ffmpeg 可以从 STDIN 读取,因此您所要做的就是通过该流将脚本中的帧以 ffmpeg 可以理解的某种格式传送到 ffmpeg。

例如,如果我使用 ffmpeg 将视频流解码为单个帧,并使用 YUV420P 作为像素格式,我可以将它们读回,但我只需要再次指定尺寸、帧速率和像素格式:

ffmpeg -i input.mp4 -f rawvideo - | \
ffmpeg -f rawvideo -s 1920x1080 -r 60 -pix_fmt yuv420p -i - output.mp4

当然,如果您可以从脚本中流式传输有效格式(最好是可流式传输的格式,如 MPEG-2 TS),那么 ffmpeg 当然也能够读取它。

相关内容