我有两个对 ffmpeg 的调用,在终端中分别使用时可以正常工作。现在我想将两个调用合并为一个,但不知道如何操作。到目前为止,我的所有测试都失败了。
ffmpeg -i in.mov -vf scale=1920:1080 -crf 20 -preset slow out.mp4
ffmpeg -i in.mov -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[FC]" -map "[LFE]" -vcodec copy -acodec pcm_s24le -ar 48000 -ac 1 out.mov
由于我有超过 2 TB 的媒体文件,我想使用组合 ffmpeg 命令进行转换,因此批处理读取定义文件夹及其子文件夹中的所有 *.mov 文件,转换并将输出文件写入另一个定义文件夹会很棒。最佳情况是输出文件夹中的文件名、文件夹结构和文件夹名称与输入文件夹匹配。
我在 Mac OSX 上工作
答案1
对于单个命令,你只需要组合媒体操作,
ffmpeg -i in.mov -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[FC]" -map "[LFE]" -vf scale=1920:1080 -crf 20 -preset slow -c:a pcm_s24le -ar 48000 -ac 1 out.mov