处理 mp3 文件中的音轨长度元数据
Posted
技术标签:
【中文标题】处理 mp3 文件中的音轨长度元数据【英文标题】:Manipulate track length metadata in mp3 files 【发布时间】:2019-11-18 13:08:54 【问题描述】:我必须在给定的软件上播放各种 mp3 文件,而不显示任何可能导致识别播放曲目的信息(某种测验)。为此,我想将显示的轨道长度更改为任意值。我可以轻松更改标准 ID3 标签,如“姓名”、“艺术家”等。但是,更改显示的轨道长度似乎更棘手......
编辑(在维克拉姆回应后):
到目前为止,我能够通过修改 vbr 编码的 mp3 文件中的“xing”标头来操纵显示的曲目长度。更准确地说,我使用十六进制编辑器更改了“帧数”部分中的字节,该编辑器生成的 mp3 显示了修改后的音轨长度:
Track length = Number of Frames * Samples Per Frame / Sampling Rate
文件仍在正确播放。这种方法似乎适用于一般的 winamp、vlc 播放器和 windows。不幸的是,它似乎不适用于我必须使用的专有软件。使用该软件时,由于应用了不同的计算方法,不知何故仍会识别原始曲目时长。
关于如何计算轨道持续时间的任何其他想法。被骗显示任意值?
谢谢!
【问题讨论】:
【参考方案1】:是和否。
大多数 .mp3 文件在 XING 标头中除了 ID3 之外都有此额外信息,其中包含文件的持续时间。
您可以修改此标题以放置错误的信息。
或者您可以简单地删除这个 XING 标头!
.mp3 文件有两种类型:CBR 和 VBR。 CBR 是最常见的。因此,使用比特率信息,玩家仍然可以估计 CBR 的音频长度。
对于 VBR,这并不总是正确的!
因此,您拥有的音频文件很可能是没有 XING 标头的 VBR 编码 mp3。
【讨论】:
【参考方案2】:轨道长度是通过解析整个 MPEG 音频流来计算的,这是一个相当简单的过程。 XING (or similar) 标头(正确:帧)作为帮助存在,例如用于在文件中查找的附加索引,但这不是强制性的;它也之所以存在,是因为 25 年前在大多数情况下,当 VBR 被“发明”时,完全解析文件并将相关数据保存在内存中需要太多的性能。元数据,您可以在其中定义不正确的轨道长度(如TLEN frame thru ID3v2)也不是强制性的。
所以:这是不可能的。您宁愿找到选择性能而不保证他们发现的一切的软件/播放器。我也没有想到其他文件/流格式,其中轨道长度是强制性的,不能通过解析文件来计算。
【讨论】:
以上是关于处理 mp3 文件中的音轨长度元数据的主要内容,如果未能解决你的问题,请参考以下文章