【发布时间】:2011-06-03 01:52:26
【问题描述】:
我的一个朋友刚刚使用普通的cat 连接两个 mp3 文件,...
cat file1.mp3 file2.mp3 > out.mp3
...生成的文件可完美重现,播放一首歌曲,然后播放下一首。
这是什么黑魔法?标题、元数据发生了什么?这怎么行?持续时间甚至可以正确显示。
【问题讨论】:
标签: mp3
我的一个朋友刚刚使用普通的cat 连接两个 mp3 文件,...
cat file1.mp3 file2.mp3 > out.mp3
...生成的文件可完美重现,播放一首歌曲,然后播放下一首。
这是什么黑魔法?标题、元数据发生了什么?这怎么行?持续时间甚至可以正确显示。
【问题讨论】:
标签: mp3
MP3 文件只不过是原始的 MPEG2-Layer 3(音频)流数据,没有文件级别的标头结构,例如持续时间、原始来源、编码信息。 MP3 流由以同步标记 FF Fx 开头的块组成,因此可以将任意数据(例如 ID3 标签)放置在任何地方并且不会影响音频。如果 ID3 标签未列出此信息,玩家要么根据比特率和文件大小猜测持续时间,要么对文件进行全面扫描以准确计算。
【讨论】:
不要忘记播放器通常准备处理variable bitrate 编码,因此每个帧都可能有不同的比特率。
至于元数据,那是一只奇怪的鸭子;即使两个曲目中的id3 tags 将包含在新文件中,大多数播放器也只会在文件的 end 处寻找标签以显示给用户,然后直接跳过文件中间的嵌入标签称为“非音乐”内容。有些可能会玩垃圾或崩溃,但如果它们那么脆弱,我怀疑它们会受欢迎。
请注意,mp3 headers 不会对有关整体文件大小的任何信息进行编码——这都是在运行时计算的。 (也许是通过魔法。)
当我试图通过收听流媒体广播电台学习德语时,我经常使用dd 通过猜测我想要开始和停止剪辑的轨道多远来分割巨大的流......不雅,但没有重新编码,我的播放器处理得很好。
【讨论】: