问题标签 [audiotoolbox]

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.

0 投票
4 回答
10188 浏览

iphone - 拔下耳机时是否有事件?

在测试期间,一位客户注意到拔下耳机时 iPhone 中的视频播放会暂停。他想要类似的音频播放功能,也许还有弹出消息的能力。

有谁知道是否有某种事件我可以参与以使这成为可能?

0 投票
1 回答
1046 浏览

ios - 将两个 CAF 文件连接在一起

我这里有一个简单的问题。我有两个 CAF 文件。我想做的就是加入他们成为一个长音频文件。

我试图:

  • 使用 NSData 类并将两个文件的音频数据附加到一个文件中。没有奏效。我假设某些文件属性未正确设置。结果文件只播放第一个文件的长度。

  • 尝试在我的加入过程中设置结果文件的 kAudioFilePropertyAudioDataByteCount 属性。没有结果。

谁能指出我正确的方向/帮助我提供一些示例代码?我见过其他人提出类似的问题,但没有得到答复。希望有人能把这个捡起来。

非常感谢您的帮助。谢谢。

0 投票
1 回答
1930 浏览

iphone - AudioQueueNewInput callback latency

Regardless of the size of the buffers I provide the callback provided to AudioQueueNewInput occurs at roughly the same time interval.

For example:

If you have .05 second buffers and are recording at 44k the callback first called about at .09 seconds and then a second call occurs right after (.001 seconds). Then you wait again for ~.09 seconds. If your buffer size was .025. You would wait .09 seconds and then see 3 more buffers nearly instantly.

Changing the sample rate increases the latency.

Recording 16 bit 8k audio results in .5 seconds of latency between buffer floods.

So I suspect that there is an 8000 byte buffer that is being used behind the scenes. When it's filled my callback gets run with the given buffers until it is emptied.

I want to record 16k 16 bit audio with as little latency as possible. Given the above I always see about a quarter of a second of latency. Is there a way to decrease the latency? Is there an audio session property to set the internal buffer size? I've tried kAudioSessionProperty_PreferredHardwareIOBufferDuration but it does not seem to help.

thanks!

0 投票
1 回答
1163 浏览

iphone - 停止并快速重放 AudioQueue

我有一个音频队列,我可以正确播放、停止、暂停,但我发现 AudioQueueStop() 函数需要很长时间才能执行。

我想立即停止然后重新开始播放音频队列,并且想知道最快的方法是什么。

在我的项目中,我有多个音频队列,我一直在播放特定的声音。有一种情况,我必须停止其中一些声音,然后立即播放它们,一次播放更多。如果只有几个音频队列我这样做还不错,但如果有很多我需要停止并重新启动,它就会开始花费很长时间。

我可以通过在音频队列上调用 stop 然后创建一个具有相同声音的新队列来伪造它,但我想知道是否有更好的方法来做到这一点。

0 投票
1 回答
326 浏览

iphone - Audio Toolbox 声音变化问题

我是 iphone programin 的新手,我写了一个小动画程序。我使用 audiotoolbox 框架来播放声音,它正在工作。但是当我更改声音文件时。(从资源和文件夹中删除exfile并添加另一个同名,相同路径的文件)

但改变声音后不起作用。

我还用 ex-file 更改了声音文件。但即使 ex 文件也不起作用。

(两者都是 .wav 类型)如果你想我可以在这里写代码。

谢谢你的帮助。

0 投票
1 回答
4378 浏览

iphone - iPhone AudioServicesPlaySystemSound:通过耳机路由?

我在使用 AudioServicesPlaySystemSound 时遇到问题。当输出通过扬声器时,效果很好。但是,当用户插入耳机时,没有输出。有没有一种简单的方法来设置某种监听器,以便音频在插入耳机时自动通过耳机路由,否则通过扬声器?

我正在使用以下方法播放简短的 AIF 声音样本:

我知道我一定遗漏了一些东西,一些可以做到这一点的设置。有任何想法吗?

0 投票
0 回答
174 浏览

iphone - 此警告在控制台中表示什么。我第一次想出来(我从 iphoneSimulator->Hardware-SimulateMemoryWarning 得到它?

该应用程序仅在 iPhone 3G 上崩溃。是否有任何音频工具箱库问题?

我收到以下导致应用程序崩溃的警告消息。它说什么?(我从 iphoneSimulator->Hardware-SimulateMemoryWarning 得到它。)

2011-01-22 15:08:34.911 XXXXXXXXX[56011:207] 收到模拟内存警告。

2011-01-22 15:08:38.795 XXXXXXXXX[56011:207] 收到模拟内存警告。检测到尝试调用 iPhone 上不存在的系统库中的符号:

_Unwind_Resume 从图像 AudioToolbox 中的函数 _ZN15ID3ParserHandleC2EPvPFlS0_mmmPS0_PmE 调用。

我使用音频工具箱框架来播放声音。停止它会导致这个问题吗?

0 投票
1 回答
2254 浏览

iphone - AVAudioSession 自动重新路由 iPhone 音频?

我在我正在开发的 cocos2d 游戏中使用 AVAudioRecorder 时遇到 AVAudioSession 问题。

我正在尝试使用一个简单的 AVAudioRecorder 示例来捕获麦克风输入,以检测用户何时在麦克风中发出声音(声音本身并不重要,因为我正在录制到 /dev/null 中)。

这是我的麦克风设置代码:

在使用上述代码的 iPhone 上,场景开始时所有音频(音效、背景音乐等)都在非常低的水平上播放,因为它只是通过手机扬声器播放,而不是通过外部扬声器播放。当我在 iPad 或 iPod Touch 上进行测试时,背景音频按预期通过外部扬声器播放。这是一个问题,因为在游戏的这个特定部分使用 iPhone 版本玩游戏时,游戏的音量会急剧下降。

当我注释掉 AVAudioSession 设置行时,声音通过外部扬声器播放,但我当然不能再获得麦克风输入。这个问题有什么解决方法或解决方案吗?我需要能够使用 AVAudioRecorder 进行录制,但仍然可以从 iPhone 的外部扬声器输出音频。

谢谢!

0 投票
2 回答
3572 浏览

memory-leaks - AudioToolbox 库 AVAudioPlayer 中的内存泄漏

AVAudioPlayer 对象是否存在内存问题?在模拟器中使用 AVAudioPlayer 时出现内存泄漏。我如何创建 AVAudioPlayer 并不重要。我用过initWithContentsOfURLInitWithData。下面是代码片段。完整项目@Github https://github.com/docchang/MemoryLeakAVAudioPlayer

但是,在设备上测试它时没有内存泄漏。这个问题开始倾向于与 AudioToolBox 库有关,但只是想与 stackoverflow 的人确认一下。

0 投票
1 回答
568 浏览

ios - 为 AVAssetReaderAudioMixOutput 指定基于软件的编解码器?

在 ios 设备上,是否可以AVAssetReaderOutput被告知仅使用基于软件的解码器(即kAppleSoftwareAudioCodecManufacturer,而不是kAppleHardwareAudioCodecManufacturer)?

我看到使用 AudioToolbox 中的音频格式服务可以做到这一点,但我不知道如何将其转移到 AVFoundation。

原因是我想在播放 iPodMusicPlayer 时从 iTunes 库中解码压缩音频 - 因为硬件辅助解码不支持同时解码多首歌曲,我的应用程序需要使用软件解码(对吗?)

我宁愿不将软件解码作为两步过程进行(即将压缩文件导出到应用沙箱,然后使用 AudioToolbox 打开)。