我有一个 11 分钟长的 MP3 文件。当我在某些媒体播放器(VLC、网络浏览器)中跳转到歌曲的 6:15 时,该时间戳代表的歌曲点与其他媒体播放器(Windows Media Player 或 DAW,如 Reaper 和 Audacity)中的不同。也就是说,歌曲中的同一点在某些播放器中是 6:15,而在其他播放器中是 6:25 左右。
在所有播放器中,这首歌似乎仍然有整整 11 分钟。我不清楚时间差异在哪里出现。
什么原因导致这种差异?是编解码器问题吗?是 MP3 问题吗?还是其他原因?
答案1
根据程序如何搜索 mp3 文件,它可能无法获得正确的时间。Mp3 文件没有时间戳数据帧,因此可变比特率 (VBR) 文件可能无法轻松计算出文件中特定时间所需的数据帧数。
恒定比特率 (CBR) 文件至少每个数据帧具有固定量的音频“时间”,因此您至少可以计算出多少帧可以使您达到您想要的大致时间,对于 44.1kHz 音频,大约在 26ms 内,所以您很有可能得到正确的时间。
但是对于 VBR 文件,每帧的时间长度可能会有些随机。安静的声音或恒定频率可能压缩得更好,占用的数据帧更少,从而导致总帧数更少,以达到特定时间,换句话说,一帧数据可能是 36 毫秒,而不是 26 毫秒。其他声音可能占用更高的比特率,从而导致帧时间更短。
VBR 文件可能有一个标签告诉您“平均”比特率,但整个文件的平均值并不能使该文件内的搜索特别准确。
总的来说,对于 VBR 文件,您不能再使用固定计算来获取文件中的特定时间。要获取精确时间,您必须完全解码整个文件并搜索解码的输出。
结果,你最终可能会得到一些程序根据处理后的数据准确地搜索文件,而一些程序只是说“好吧,平均值是这样的,所以如果我计算每帧的平均时间,那么它需要这么多帧才能达到那个时间”。
结果是某些程序可能会在文件中出现不同的“时间”。
更多信息请访问 Stack Overflow:MP3 文件中的精确搜索