问题标签 [extaudiofileread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 是什么导致 ExtAudioFileRead 使 ioData->mBuffers[0].mDataByteSize 为负数?
当我经常停止和开始音频播放并通过ExtAudioFileRef
对象在 AAC 音频文件中来回寻找很多时,就会出现问题。在少数情况下,这种奇怪的行为表现为ExtAudioFileRead
:
有时它会将这些数字分配给mDataByteSize
唯一AudioBuffer
的AudioBufferList
:
在十六进制中,这些数字具有模式0xFC....00
。
编码:
输出:
该问题发生在 iOS 7 上的 iPhone 4S 上。我无法在模拟器中重现该问题。
ios - 使用 ExtAudioFileRead 循环 AAC 文件 - 错误?
使用 ExtAudioFileRead 在 iOS 上读取音频文件,似乎到达 eof 会完全冻结阅读器……例如,假设 _abl AudioBufferList 和 _eaf ExtendedAudioFileRef 已分配并正确配置:
没有错误,总是相同的行为,就像阅读器卡在文件末尾一样。ExtAudioFileTell 确认请求的搜索,顺便说一句。还尝试跟踪文件中的位置以仅请求 eof 处可用的帧数,结果相同:一旦读取最后一个数据包,seek 似乎没有任何效果。
在其他情况下愉快地寻求。
漏洞?特征?即将面掌?我非常感谢解决这个问题的任何帮助!
我正在 iPad 3 ( iOS7.1 ) 上对此进行测试。
干杯,
格雷佐
ios - Core Audio 大(压缩)文件播放和内存占用
因此,我设置了一个多通道混音器和一个远程 I/O 单元来混合/播放我从音频文件中读取的多个 PCM 数据缓冲区。对于我的游戏中的简短音效,我使用ExtAudioFileRead()
.
对于我的背景音乐,假设我有一个 3 分钟的压缩音频文件。假设它被编码为 mp3 @ 128 kbps(44,100 Hz 立体声),每分钟大约 1 MB,或总共 3 MB。未压缩,在记忆中,如果我没记错的话,我相信它大约是十倍。我可以使用与小文件完全相同的方法;我相信ExtAudioFileRead()
会处理解码,在可用时使用(单个)硬件解码器,但我宁愿不一次读取整个缓冲区,而是定期从磁盘“流式传输”它。
想到的第一件事是往下走一步(非“扩展”)音频文件服务 API 和使用AudioFileReadPackets()
,如下所示:
准备两个缓冲区 A 和 B,每个缓冲区都足够大,可以容纳(比如说)5 秒的音频。在播放过程中,从一个缓冲区开始读取并在到达末尾时切换到另一个缓冲区(即,它们构成了环形缓冲区的两半)。
将文件中前 5 秒的音频读入缓冲区 A。
将文件中接下来 5 秒的音频读入缓冲区 B。
开始播放(从缓冲区 A)。
一旦播放头进入缓冲区 B,将接下来 5 秒的音频加载到缓冲区 A。
一旦播放头再次进入缓冲区 A,将接下来 5 秒的音频加载到缓冲区 B。
转到#5
这是正确的方法,还是有更好的方法?
ios - AudioFileReadBytes 错误 -38
我有一个 .aif 文件,我尝试读取并添加到 char* 缓冲区。第一次阅读后,我得到 -38 错误。这是什么意思以及如何解决这个问题?这是我的代码:
ios - 减少 ExtAudioFileRead 的输出幅度
我希望在将 ExtAudioFileRead 的输出重新保存到文件之前降低其输出幅度。这是我的原始代码:
我曾想过循环通过 convertData.mBuffers[0].mData,将每个样本乘以一个分数,但它的类型是“void”。任何想法都会很棒,感谢阅读!
编辑:
这是我现在要走的路:
输出文件绝对不是输入的缩放版本,但我认为这可能是由于上面的变量选择不正确。
ios - 使用 ExtAudioFileRead 播放 .caf 音频文件不同步
我的应用程序对来自麦克风输入的音频进行大量数据处理。为了获得“演示模式”,我想基于本地 .caf 音频文件做同样的事情。我设法得到了音频文件。现在我正在尝试使用 ExtAudioFileRead 读取 .caf 文件,然后进行数据处理。
显然有一些我不明白的地方,或者我对 ExtAudioFileRead 做错了,因为这段代码根本不起作用。我有两个主要问题:
- 文件即刻播放。我的意思是 44'100 个样本显然不等于 1 秒。我的 3 分钟音频文件处理在几秒钟内完成......
- 在处理过程中,我需要更新 UI。所以我有一些 dispatch_sync
processaudio
和realtimeUpdate
. ExtAudioFileRead 似乎真的不喜欢这并且它冻结了。谢谢你的帮助。
core-audio - 使用 kAudioUnitSubType_AudioFilePlayer 播放音频
我使用远程 I/O 音频单元和渲染回调成功地实现了音频文件播放器,其中我使用 ExtAudioFileRead 渲染音频帧。
此时我只是想知道使用 kAudioUnitSubType_AudioFilePlayer 而不是使用 ExtAudioFileRead 的渲染回调会有什么区别。这种方法有什么好处?
从苹果文档中我无法扣除差异。
objective-c - 使用 ExtAudioFile 结合循环缓冲区读取数据时会出现故障
我正在尝试处理使用ExtAudioFile
. 但是,当我尝试将此数据放入循环缓冲区时,我听到了几个故障。
在下面的示例代码中,我将数据从“inBuffer”直接传递到“outBuffer”(两者都是TPCircularBuffer
Michael Tyson 的类型)。两个缓冲区的大小都是 10 x numberOfFrames * sizeof(float)
。客户端流格式是带有浮点样本的单声道。
为什么我什至没有处理任何数据就听到这些故障?如果没有循环缓冲区,声音会很好地流动。我做错了什么或者另一种方法会更好?
编辑 根据下面的答案,我通过在回调函数之外分配和释放内存以及增加循环缓冲区的大小来修改代码。不幸的是,声音仍然比没有循环缓冲区的情况差。这些故障还有其他原因吗?
ios - 将 AAC ADTS 解码为 PCM(奇怪的声音)
我正在尝试将 AAC 解码为 PCM,一切似乎都正常。问题是我可以在我的音频文件中听到奇怪的声音(像蛇一样):)
音频文件是这个:https ://www.dropbox.com/s/2a6c1m38w1cu0km/myaudiofileWrite.m4a?dl=0
我将 AAC ADTS 解码为 PCM 的方法是:
格式:
你知道会发生什么吗?
ios - ExtAudioFileRead 太慢。如何让它更快?
我已经编写了自己的音频库。(傻,我知道,但我喜欢它。)现在,我用它来播放 iOS 上 iPod 库中的立体声文件。它运行良好,只是有时调用 ExtAudioFileRead() 需要超过 23 毫秒。由于我的 AudioUnits 输出设置以 44.1KHz 播放音频,并且每次回调要求 1024 帧。我的代码 + ExtAudioFileRead() 响应时间不得超过 23 毫秒。
我很惊讶 ExtAudioFileRead() 这么慢。我正在做的事情似乎很正常。我在想一定有一些我没有做的未记录的配置魔法。这是我的相关配置代码:
我没有设置 _extAudioFileRef 的任何其他属性。
我已经追查到这件事了。我已经在对 ExtAudioFileRead() 的调用中进行了时间测量,所以我知道不是我的代码减慢了这个过程。应该是配置问题吧?
非常感谢您的帮助甚至猜测!
干杯,克里斯托弗