我想编写这个命令
ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output.mp3
合并file1.mp3
和file2.mp3
成为output.mp3
。
问题是我有很多我想合并的文件。
例
ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output1.mp3 ffmpeg -i concat:output1.mp3\|file3.mp3 -acodec copy output2.mp3 ffmpeg -i concat:output2.mp3\|file4.mp3 -acodec copy output3.mp3 ffmpeg -i concat:output3.mp3\|file5.mp3 -acodec copy output4.mp3
output4.mp3
是我正在寻找的结果。
这些文件实际上并不是很好地称为“文件”,然后是一个数字,但是ls
按照它们应该合并的顺序列出它们。
题
这怎么可以脚本化,所以我可以在一个目录中执行一个奇数或偶数的文件?
如果ffmpeg
支持多于两个文件,并且没有包含|
文件 ,并且没有太多,你可以这样做: ffmpeg -i concat:"$(ls|tr '\n' '|')" -acodec copy out.mp3
如果不:
for cfile in *.mp3; do ffmpeg -i concat:myout.mp3tmp1\|$cfile -acodec copy myout.mp3tmp2 mv myout.mp3tmp2 myout.mp3tmp1 done mv myout.mp3tmp1 <your final file name>
如果你只能连接所有的文件在一个洗,这是最好的。 但是对于你的Bash问题的一个通用答案:
ffmpeg -i concat:file1.mp3\|file2.mp3 -acodec copy output1.mp3 for i in $(seq 1 10); do ffmpeg -i concat:output${i}.mp3\|file$((i + 2)).mp3 -acodec copy output$((i + 1)).mp3 done
这里10
是比你输入文件总数少两个。