如何在iPhone上的流音频中实现搜索(时间线功能)?

AudioFileStreamSeek方法采用我要开始寻找的字节偏移量。我希望能够获取正在播放的mp3的当前位置,并让用户在以后的某个时间点返回(搜索)到相同位置。

但是我找不到知道已播放的字节数的任何方法。我可以找出已传输的字节数。但是无法找出已经播放了多少字节。我使用Matt Gallagher的音频流示例作为基础。

任何帮助是极大的赞赏。

谢谢。


可能只是能够找到解决方案。 AudioFileStreamSeek文档说



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



我们该怎么做?我们应该使用Http Range参数吗?如果我们将字节偏移量发送到Range,它将按预期工作吗?我应该如何清除缓冲区中的现有字节,以避免两个流一起播放?

任何帮助,不胜感激。谢谢。

最佳答案

AudioFileStreamSeek处理数据包,而不处理字节数。因此,您真正需要跟踪的是数据包计数。

Matt的代码中的MyEnqueueBuffer方法是将缓冲区发送到AudioQueue进行回放的位置。抓取packetsfilled,并在packetsfilled重置为0之前增加索引变量:

myData.absolutePackets = myData.absolutePackets + myData-> packetsFilled;

我的问题是,即使使用此值,我也无法正确实现AudioFileStreamSeek。因此,如果您有一些与Matt的代码一起工作的示例代码,请分享。

谢谢!

10-05 18:13