如何用单个FFMPEG命令实现静态帧背景叠加视频连续帧无中间文件输出
你原有命令出错的核心原因是:给A视频添加的-frames:v 1 -f null -参数作用是直接丢弃A视频的输出流,滤镜处理环节仍然会读取A视频的后续帧来匹配B视频的帧序列,所以最终输出的背景会随叠加帧同步变化。
可使用以下单条FFMPEG命令实现需求,无中间磁盘写入:
ffmpeg -y \ -ss 730.250 -i A.mkv \ -ss 730.250 -i B.mkv \ -filter_complex "[0:v]trim=end_frame=1,loop=loop=-1:size=1[bg];[1:v]scale=iw/3:-1[tmp];[bg][tmp]overlay=shortest=1[out]" \ -map [out] -frames:v 20 out%d.jpg
核心参数说明:
[0:v]trim=end_frame=1:仅保留A视频指定时间点抽取的第一帧,裁剪掉后续所有帧loop=loop=-1:size=1:把裁剪得到的单帧无限循环,生成持续的静态背景流overlay=shortest=1:指定输出流时长以较短的B视频流为准,避免静态背景无限循环导致命令无法停止- 全局
-frames:v 20:控制最终输出20张图片,无需在B视频的输入参数中单独指定帧数
内容的提问来源于stack exchange,提问作者AndroidX
相关产品推荐
相关产品推荐

