【问题标题】:Using cat to join mp3 files. What is this black sorcery?使用 cat 加入 mp3 文件。这是什么黑色魔法?
【发布时间】:2011-06-03 01:52:26
【问题描述】:

我的一个朋友刚刚使用普通的cat 连接两个 mp3 文件,...

cat file1.mp3 file2.mp3 > out.mp3

...生成的文件可完美重现,播放一首歌曲,然后播放下一首。

这是什么黑魔法?标题、元数据发生了什么?这怎么行?持续时间甚至可以正确显示。

【问题讨论】:

    标签: mp3


    【解决方案1】:

    MP3 文件只不过是原始的 MPEG2-Layer 3(音频)流数据,没有文件级别的标头结构,例如持续时间、原始来源、编码信息。 MP3 流由以同步标记 FF Fx 开头的块组成,因此可以将任意数据(例如 ID3 标签)放置在任何地方并且不会影响音频。如果 ID3 标签未列出此信息,玩家要么根据比特率和文件大小猜测持续时间,要么对文件进行全面扫描以准确计算。

    【讨论】:

    • 是的 - MP3 文件很奇怪,因为它们只是没有任何封装的原始流。一个更正:它们通常是 MPEG1-Layer3。
    • @John:哦?我一直听说 MPEG2,是因为它是“当前”的 mp3 吗?还是我疯了?
    • MPEG 数字并不是真正的版本——它们只是增加的标准。在这种情况下,MPEG-2 以一些较低的比特率扩展了 MPEG-1 音频标准,而且奇怪的是并没有完全重叠——它不允许高比特率。所以大多数人在 128kbit 上使用的实际上是 MPEG-1 Layer-3。请参阅另一个答案中的“mp3 headers”链接。
    【解决方案2】:

    不要忘记播放器通常准备处理variable bitrate 编码,因此每个帧都可能有不同的比特率。

    至于元数据,那是一只奇怪的鸭子;即使两个曲目中的id3 tags 将包含在新文件中,大多数播放器也只会在文件的 end 处寻找标签以显示给用户,然后直接跳过文件中间的嵌入标签称为“非音乐”内容。有些可能会玩垃圾或崩溃,但如果它们那么脆弱,我怀疑它们会受欢迎。

    请注意,mp3 headers 不会对有关整体文件大小的任何信息进行编码——这都是在运行时计算的。 (也许是通过魔法。)

    当我试图通过收听流媒体广播电台学习德语时,我经常使用dd 通过猜测我想要开始和停止剪辑的轨道多远来分割巨大的流......不雅,但没有重新编码,我的播放器处理得很好。

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 2020-07-01
      • 2012-05-14
      • 1970-01-01
      • 2016-05-15
      • 2023-03-18
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多