问题描述
需要合并文件夹中固定前缀+自然数排列的数个音频文件,同时按需进行转码。
系统环境:MacOS/Linux
实现方法
Shell中按自然数排序获取一行一个文件的文件列表,并在每行前面加file空格,匹配ffmpeg拼接清单格式,保存为文本文件
ls -1v|sort -V|sed 's/^/file\ /' > manifest.txt
利用ffmpeg进行拼接
ffmpeg -f concat -i manifest.txt output.wav
注意:源文件是什么格式,output后缀就是什么格式
一句话命令
合并以上步骤,组成完整的一句话命令(请根据实际情况修改命令!)
源音频为为wav,输出wav格式(不转码)
rm all.wav; ls -1v *.wav|sort -V|sed 's/^/file\ /' > manifest.txt && ffmpeg -f concat -i manifest.txt all.wav && rm manifest.txt
不论源音频为何,输出m4a(aac编码)格式
rm all.wav; ls -1v *.wav|sort -V|sed 's/^/file\ /' > manifest.txt&& ffmpeg -f concat -i manifest.txt -acodec aac all.m4a && rm manifest.txt
不转码也可以显式指定 -acodec copy 参数
参考资料
ffmpeg拼接文档 https://ffmpeg.org/ffmpeg-formats.html#concat-1
用户贡献拼接经验 https://www.jianshu.com/p/e51f5c549720
关键词
ffmpeg 拼接 合并 清单文件 转码 Linux
网友评论