在Android设备上播放4声道16位PCM音频数据

时间:2016-04-21 17:20:01

标签: java android audio

我想在我的Android应用中播放PCM音频数据。网络上有很多例子,但单声道,我有4个频道(如本问题标题所述)。

当我设置

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

我收到 IllegalArgumentException ,当我切换回 CHANNEL_OUT_MONO 时,它可以工作。我该怎么办?

1 个答案:

答案 0 :(得分:2)

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

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