【发布时间】:2023-04-11 03:27:02
【问题描述】:
我正在为 Windows 8.1 和 wp 8.1 开发通用应用程序
我编写了一个用于解码 mp3 文件的小 C++ 源代码,现在我想找到一种方法来获取总时间长度,然后再使用媒体基础 api 解码文件。
谢谢
【问题讨论】:
-
我知道如何使用旧的 Windows Media Format SDK(它也解码 MP3)来做到这一点。但这里有一个需要注意的问题。 MP3 文件本身没有“文件头”。它们由每个 500-1500 字节之间的单个 MP3 帧组成。大多数 MP3 文件在整个编码过程中都以相同的比特率进行编码。因此,如果您可以解码第一个 MP3 标头并获取其块大小、采样率和采样数,您可以插入整个文件中的帧数。 ...
-
... 但是,VBR(可变比特率)MP3 文件将具有不同的帧块,每个帧块具有不同的标头,指示不同的比特率编码。因此,获取 VBR mp3 文件持续时间的唯一准确方法是扫描每个帧块并计算其持续时间。大多数 SDK 不会这样做 - 相反,只会返回基于第一帧和整个文件大小的估计值。
标签: windows visual-c++ windows-phone-8 media