在 Google 上搜索如何加入/合并许多 mp3 文件,这表明我应该将cat它们放在一起。
这可能“有效”,但显然这不是正确的方法,因为每个标头和 IDv3 标签集也将连接在一起。
是否存在可以编写脚本以加入/合并许多 mp3 的 Linux 程序?
mplayer/mencoder/ffmpeg 能做到吗?
Amb*_*jak 103
这将连接两个 mp3 文件,生成的元数据将是第一个文件的元数据:
ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3
Run Code Online (Sandbox Code Playgroud)
这是因为,对于 ffmpeg,整个“concat:”部分是单个“输入文件”,其元数据将是第一个连接文件的元数据。如果要使用第二个文件中的元数据,则必须将其添加为虚拟输入文件并将其元数据映射到输出的元数据:
ffmpeg -i "concat:file1.mp3|file2.mp3" -i file2.mp3 -acodec copy test.mp3 -map_metadata 0:1
Run Code Online (Sandbox Code Playgroud)
如果要从这两个元数据构建元数据,则必须手动完成。您可以转储文件的元数据
ffmpeg -i file1.mp3 -f ffmetadata file1.metadata
Run Code Online (Sandbox Code Playgroud)
在转储元数据并构建新元数据后,您可以使用 将其添加到输出文件中-metadata,并且您可以通过-map_metadata从负输入文件编号设置映射来禁用元数据复制。这会设置一个名称值而不是其他元数据:
ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1
Run Code Online (Sandbox Code Playgroud)
Mil*_*lbe 25
这会将一个充满 MP3 的文件夹连接成一个 MP3 文件:
1) 保存要连接的 MP3 文件列表,例如,
$ cat mylist.txt
file '/tmp/01.mp3'
file '/tmp/02.mp3'
file '/tmp/03.mp3'
file '/tmp/04.mp3'
file '/tmp/05.mp3'
file '/tmp/06.mp3'
file '/tmp/07.mp3'
Run Code Online (Sandbox Code Playgroud)
2)运行下面的命令(-safe 0被不需要如果mylist.txt使用相对路径来代替):
$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3
Run Code Online (Sandbox Code Playgroud)
zsh:
audio-join() ffmpeg -i "concat:${(j:|:)@[2,-1]}" -acodec copy $1
audio-join output.mp3 *.mp3
Run Code Online (Sandbox Code Playgroud)
小智 5
根据 Miles Wolbe 的回答,这是一个对我有用的单线:
ls *.mp3 | \
sed -e "s/\(.*\)/file '\1'/" | \
ffmpeg -protocol_whitelist 'file,pipe' -f concat -i - -c copy output.mp3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82841 次 |
| 最近记录: |