2016-04-21 153 views
2

我想在我的Android应用程序中播放PCM音频数据。网上有很多例子,但只有为单声道,我有4个通道(如此问题的标题所述)。在Android设备上播放4通道16位PCM音频数据

当我设置

AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 48000, AudioFormat.CHANNEL_OUT_QUAD, AudioFormat.ENCODING_PCM_16BIT, bufsize, AudioTrack.MODE_STREAM); 

我得到一个抛出:IllegalArgumentException,当我切换回CHANNEL_OUT_MONO它的工作原理。我能做什么?

回答

2

发生这种情况是因为您需要使用支持4声道音频再现的设备。例如。如果您连接4声道USB音频卡,或使用HDMI连接到5.1 AV接收器,则应该可以工作。但手机和平板电脑上的常规声音输出仅支持2声道(立体声)输出。

否则,您必须首先以某种方式将音频转换为2声道。实际的程序将取决于它是什么样的音频。例如。如果是多轨录音室录音,则可能需要平移乐器,或者如果是多声道用户录音(quadro声音),则可以通过丢弃额外的2个频道将其降级为立体声,或尝试将它们混合到主音轨中立体声通道,但是存在引入梳状滤波的风险。