我正在制作节奏游戏,我需要一种快速的方法来获取ogg文件的长度。我能想到的唯一方法是在不播放文件的情况下真正快速地传输文件,但是如果我有数百首歌曲,这显然是不现实的。另一种方法是将文件的长度存储在某种属性文件中,但我想避免这种情况。我知道一定有某种方法可以做到这一点,因为大多数音乐播放器可以告诉您一首歌曲的长度。
最快的方法是查找文件的末尾,然后返回找到的最后一个Ogg页面标题并读取其granulePosition(文件中每个通道的样本总数)。这不是万无一失的(您可能正在查看一个链接的文件,在这种情况下,您只会得到最后一个流的长度),但是应该可以用于绝大多数Ogg文件。
如果您需要有关读取Ogg页面标题的帮助,则可以阅读Jorbis源代码...简短版本是查找“ OggS”,读取一个字节(应为0),读取一个字节(仅应将bit 3设为设置),然后读取64位Little Endian值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句