2

我使用 AudioFileStream 在线播放 AAC 音乐。当用户尝试寻找时,我需要调用AudioFileStreamSeek来知道我需要寻找的流文件的偏移量,因为AAC是VBR音乐格式,没有AudioFileStreamSeek我无法知道偏移量。

“调用此函数后,解析器假定传递给 AudioFileStreamParseBytes 函数的下一个数据从 outAbsoluteByteOffset 参数中返回的字节偏移量开始。” 文件说。

如果在调用 AudioFileStreamSeek 后发现我还没有需要查找的数据,我该怎么办?我唯一能做的就是继续解析字节而不寻找。有时音乐停止声音,我认为这是因为我违反了在文件的正确偏移量中提供目标数据的承诺。

好的问题是:如果我想寻找某个时间戳,比如 2:28,如何在不调用 AudioFileStreamSeek 的情况下获得目标文件偏移量?

4

1 回答 1

2

没有容器的原始 AAC 是不可搜索的。

你能做的最好的事情是针滴。如果您知道文件的时间长度并且您知道要查找的时间,那么按比例划分文件字节,您就会接近。(编解码器可能会为此打嗝,但通常会自行重新同步。)

另一个常见的选择是让服务器端创建一个文本文件或为您提供文件中的偏移量的东西。这可能比它值得做的工作更多,因为您可以将 AAC 包装在 MP4 容器中,这样就可以解决问题。

于 2013-05-11T14:37:59.677 回答