首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExtAudioFileSeek后跟ExtAudioFileRead,返回许多连续的0样本(不可能)

ExtAudioFileSeek后跟ExtAudioFileRead,返回许多连续的0样本(不可能)
EN

Stack Overflow用户
提问于 2012-04-02 22:06:24
回答 1查看 1.1K关注 0票数 2

我正在尝试为iPhone编写一个波形可视化工具,我遇到了一个关于ExtAudioFileRead的有趣问题。

我正在从VBR的MP3文件中读取。我的客户端格式是44.1 mono,单声道。

我将寻找一个我想要可视化的位置,并在1024帧中阅读。我看到的是70%或80%的情况下,在前512帧左右,我会得到0。读取器报告它已成功读取所有请求的帧。

此外,我已经证实我正在寻求正确的位置。如果我将读取结果放入音频队列中,它显然是文件中的正确位置。

那是怎么回事呢?有没有想过为什么会出现这种情况?我在文档中找不到任何与这个问题相关的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-04 06:26:47

我设法解决了这个问题,方法是在请求帧的位置之前定位1024帧,读取1024 + requestedLength帧,然后从缓冲区中取出最后的requestedLength帧。

我不确定为什么这个解决方案有效,但我有一个理论(以防有人正在阅读本文)

在压缩格式中,音频文件被分成多个包。帧mid分组需要对任何先前的帧(来自同一分组)进行解码以便被理解。

猜测将追随

也许当您使用ExtAudioFileSeek查找包中时,此解码不会发生,并且会返回零,直到您到达下一个包边界。

我的解决方案可能会起作用,因为我回溯了足够远的距离,可以在同一个包中读取我想要的帧之前的所有帧,所以解码确实发生了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9977971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档