无需重新编码即可合并 mp3 文件并使提示表指向单个曲目?
Posted
技术标签:
【中文标题】无需重新编码即可合并 mp3 文件并使提示表指向单个曲目?【英文标题】:Merge mp3 files without recode and make cue sheet pointing to individual tracks? 【发布时间】:2017-09-28 09:43:50 【问题描述】:我有很多有声读物,每本通常分为 20-60 个文件。如果我想按流派将音频播放器分组(将 [专辑艺术家] ID3 标签设置为“各种艺术家”),使用音频播放器导航会很不舒服。
是否有免费的 windows 或 linux 工具或工具集,谁可以执行以下操作?
-
无需重新编码即可将有声读物文件合并为一个 mp3
仔细构建正确的 CUE 表,原始 ID3 标签指向新实体 mp3 文件中的前章节。
【问题讨论】:
【参考方案1】:您可以通过简单的连接轻松加入 mp3。
cat file1.mp3 file2.mp3 file3.mp3 file4.mp3 file5.mp3 > file-all.mp3
可以使用 ffprobe 提取标签:
ffprobe file1.mp3
提示表是文本文件,您可以在此处了解其格式:
https://en.wikipedia.org/wiki/Cue_sheet_(computing)
由于这里的问题与编程有关,我不会发布完整的解决方案。
【讨论】:
MP3 文件通常包含标签等。虽然您可以连接 MPEG 流,但这在实践中是行不通的。使用 FFmpeg 或类似工具提取流。 它只适用于选定的音频播放器,你很幸运没有使用其他播放器。换句话说,连接 mp3 文件而不是流是松散和错误的,因为源 mp3 包含标题,ID3 标签甚至覆盖图像以及可以放置在那里的任何内容。生成的文件将是 headers、streams 和 id3 标签的 frankensteined 混合。此外,您的方法根本无法满足我的需求,因为错过了不太常见的任务的配方 - 构建 CUE。而且,我知道一些 concat 工具(如 mp3cat)的存在,但我需要一个工具或一组工具来完成我的任务。 它适用于我拥有的任何播放器,所以对我来说已经足够了。我知道 mp3 的内部结构,因为我创建了许多与多媒体相关的软件,所以我知道如何以及为什么可以连接文件。另外,SO 是程序员的资源,所以自己编写自己的工具,我会给出所有需要的方向。 您在回答未提出的问题,抱歉。我没有询问编程方向。【参考方案2】:不要使用 MP3,使用 Matroska (MKV)。它支持所有这些章节以及不支持的内容。
FFmpeg 和 mkvmerge 是您可以使用的工具。使用-c:a copy
,音频不会被重新编码。 (MKV 支持 MP3 作为编解码器。)
【讨论】:
Matroska 的音频播放器支持怎么样? F.e.标准的 android 谷歌音乐播放器还是 ios 的标准播放器? 安卓,是的。 iOS,默认情况下不是,但您始终可以在您的应用中内置 Matroska 解复用器。以上是关于无需重新编码即可合并 mp3 文件并使提示表指向单个曲目?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在不重新编码的情况下将立体声合并/缩混为单声道(m4a 或 opus)