我正在尝试创建一个视频文件,其中包含来自2个源mp4视频文件的帧,如下所示:
I1 I2 P1 P2 I1 I2 P1 P2 I1 I2 P1 P2 ...
其中I =内部,P =预测,数字是来自哪个源文件。
使用ffmpeg命令可能吗?如果没有,如果我使用read_thread的ffplay代码,如何将av_read_frame返回的内容放入正确的视频文件中?
谢谢
答案 0 :(得分:1)
不进行转码就不能这样做。这是一个具有相同分辨率和帧频的视频的简单示例:
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v][1:v]blend=all_expr='ifnot(mod(N,2),A,B)'[out]" -map [out] out.mp4
查看此页面以获取详细信息:http://www.ffmpeg.org/ffmpeg-filters.html#blend_002c-tblend
更新:
正如Gyan的评论所说,上面的命令将丢弃一半的帧。因此,如果您不想丢失任何信息,则在交错之前将fps加倍可能更好。假设输入视频恒定为30 fps:
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]framerate=60[in0];[1:v]framerate=60[in1];[in0][in1]blend=all_expr='ifnot(mod(N,2),A,B)'[out]" -map [out] out.mp4