我在尝试从应用程序录制音频时遇到了一个有趣的问题(出于自动化目的):
我的系统是:
Mac mini OS X Yosemite
I'm running Genymotion
VirtualBox with the following Audio settings:
Host Audio Driver: CoreAudio
Audio Controller: ICH AC97
Sound driver is Soundflower (Input Soundflower (2ch), Output Soundflower (2ch))
我正在使用Twilio通过我自己的客户端发起VoIP呼叫。 所以基本上我的流程是这样的:我在Genymotion上打开应用程序,打电话给某个人回答和说话的号码,这个声音从输出到Soundflower的输入,我在Audacity录制它(1声道单声道录音)。
此方案有效 - 所有其他通话或多或少都不会产生任何声音。几乎每一秒或第三次录音都是空的。
尝试确定我已完成以下问题:
这让我相信这个问题与我的客户端应用程序有某种关系。
当我打电话时声音有效我在adb logcat中看到了这一点:
E/genymotion_audio( 464): get_next_buffer() pcm_read error -16
E/genymotion_audio( 464): get_next_buffer() pcm_read error -16
E/genymotion_audio( 464): get_next_buffer() pcm_read error -16
E/genymotion_audio( 464): get_next_buffer() pcm_read error -16
当我接到一个声音不起作用的电话时我看到这个adb logcat:
W/AudioFlinger( 464): write blocked for 10238 msecs, 2 delayed writes, thread 0xb58ba000
当我搜索有关AudioFlinger错误时,似乎与有人试图以高采样率播放音频的情况有关,但我的情况有所不同,因为它是voip所以采样率可能是8khz。
想知道是否有人遇到类似的问题/有任何关于如何进一步确定这个问题的想法吗?
编辑:我尝试过的其他内容:
Windows 8 + Genymotion - 使用Audacity进行相同的场景录制。 (Oracle VirtualBox Audio是HostDriver:Windows DirectSound和Controller:ICH AC97)。而不是Soundflower,我使用VB虚拟电缆驱动程序的Windows。 它完美无缺。
在Mac上 - 用WavTap驱动程序取代了Soundflower - 仍然是同样的问题。