我是ffmpeg的新用户,但是我有一个稍微复杂的用例。我需要能够从视频和/或音频的多个部分中剪切多个部分,视频和音频文件的实际长度保持完整(例如,音频将被剪切,但视频继续,或视频继续,但音频被剪切)。我一直在慢慢学习复杂的滤波器图,但一点帮助将非常感激。
这是目前我的超级基本的测试脚本。看看我是否可以让它工作(在实际用例中,时间戳将是python程序中的变量)
ffmpeg -i bdt.mkv -filter_complex
[0:v]trim=start=10.0:end=15.0,setpts=PTS-STARTPTS[0v];
[0:a]atrim=start=10.0:end=15.0,asetpts=PTS-STARTPTS[0a];
[0:v]trim=start=65.0:end=70.0,setpts=PTS-STARTPTS[1v];
[0:a]atrim=start=65.0:end=70.0,asetpts=PTS-STARTPTS[1a];[0v][0a][1v]
[1a]concat=n=2:v=1:a=1[outv][outa] -map [outv] -map [outa] out.mp4
使用时间轴选项enable
和between
表达式。对于视频,您可以使用overlay
过滤器。
-vf color=black[b_];
[b_][0:v]scale2ref[b][in];
[in][b]overlay=shortest=1:enable='between(t,1,2)'
音频,使用volume
滤波器:
-af volume=0:enable='between(t,1,2)'
你需要逃离'
s。如果你想做更复杂的打开/关闭的enable
选项使用额外的表达式(见上面的链接)。
这些并不是达到效果的唯一方法,但却是我能想到的最简单的方法。