如何在一次执行中运行多条FFmpeg命令?
如何在一次执行中运行多条FFmpeg命令?
看起来你想批量执行FFmpeg命令,但之前的尝试出错是因为第二个命令漏掉了ffmpeg关键字,我来给你梳理几种可行的解决方案:
一、顺序执行(确保前一个命令完成再执行下一个)
如果你希望命令按顺序逐个执行(前一个成功完成后再跑下一个),可以用&&连接,注意每个命令都要完整写全:
ffmpeg -i vid.mkv -codec copy vid.mp4 && ffmpeg -i vid.mkv -map 0:2 output_file.wav && ffmpeg -i vid.mp4 -i output_file.wav -map 0:0 -map 1:0 -vcodec copy -acodec copy new_test.mp4
&&的作用是:只有前一个命令执行成功(返回码为0),才会执行后面的命令;如果用;代替&&,则不管前一个命令是否成功,都会继续执行下一个。
二、并行执行(让前两个命令同时运行)
如果你想让前两个导出命令同时运行(节省时间),可以用&把命令放到后台执行,再用wait等待两个后台命令都完成后,再执行合并命令:
ffmpeg -i vid.mkv -codec copy vid.mp4 & ffmpeg -i vid.mkv -map 0:2 output_file.wav && wait && ffmpeg -i vid.mp4 -i output_file.wav -map 0:0 -map 1:0 -vcodec copy -acodec copy new_test.mp4
- 注意:并行读取同一个源文件可能会增加磁盘IO压力,如果你的磁盘性能一般,可能会出现卡顿或错误,这种情况下更推荐下面的高效方案。
三、更高效的单命令多输出(避免重复读取源文件)
因为你前两个命令都是读取同一个vid.mkv文件,重复读取会浪费系统资源,FFmpeg支持一次读取源文件同时输出多个结果,这样效率更高:
ffmpeg -i vid.mkv \ -codec copy vid.mp4 \ -map 0:2 -acodec copy output_file.wav
这条命令会一次性读取vid.mkv,同时导出复制编码的MP4文件,以及指定音轨的WAV文件。之后再执行你的合并命令即可:
ffmpeg -i vid.mp4 -i output_file.wav -map 0:0 -map 1:0 -vcodec copy -acodec copy new_test.mp4
备注:内容来源于stack exchange,提问作者Kyle Demi
相关产品推荐
相关产品推荐

