如何在流文件中使用AudioFileStreamSeek?

时间:2013-05-10 10:55:53

标签: ios audio-streaming

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

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

如果我发现在调用AudioFileStreamSeek之后我还没有找到数据,我该怎么办?我唯一能做的就是在没有搜索的情况下继续解析字节。在某些时候音乐停止声音,我认为这是因为我违背了在文件的正确偏移量中给予目标数据的承诺。

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

1 个答案:

答案 0 :(得分:2)

没有容器的原始AAC是不可寻找的。

你能做的最好的事情就是针刺。如果您知道文件的时间长度并且知道要搜索的时间,则按比例划分文件字节,然后您将关闭。 (编解码器可能会因此而打嗝,但通常会重新同步。)

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