如何通过Android AudioTrack播放WAV文件示例?
我在WAV文件中有声音效果,但我想将它们连接起来,并通过Android的AudioTrack播放它们,所以我试图找出如何将WAV样本正确编码到16位PCM中 根据这个有用的答案,我可以通过音轨播放白噪声 然而,由于某些原因,当我把它们输入到AudioTrack时,我似乎根本无法得到我的好音效来产生任何声音 我去掉了44个字符的WAV头,然后将每个小的字节对处理成一个有符号的短字符,如下所示:如何通过Android AudioTrack播放WAV文件示例?,android,audio,wav,pcm,Android,Audio,Wav,Pcm,我在WAV文件中有声音效果,但我想将它们连接起来,并通过Android的AudioTrack播放它们,所以我试图找出如何将WAV样本正确编码到16位PCM中 根据这个有用的答案,我可以通过音轨播放白噪声 然而,由于某些原因,当我把它们输入到AudioTrack时,我似乎根本无法得到我的好音效来产生任何声音 我去掉了44个字符的WAV头,然后将每个小的字节对处理成一个有符号的短字符,如下所示: byte[] arr = baos.toByteArray();
byte[] arr = baos.toByteArray();
short[] shortArr = new short[arr.length/2]; // Half the length
for (int i=0; i<arr.length; i+=2){ // Need to go 2 at a time because we're converting
// 2 little-endian bytes into one short
shortArr[i/2] = (short)(arr[i] + (arr[i+1]*256));
}
我是这样打电话的:
final short[] hiclick = getWavDataBytesAsPCM16(getResources().openRawResourceFd(R.raw.created_hi_click_188_samples));
m_audioTrack.write(hiclick, 0, hiclick.length);
我没有得到预期的音效,反而一无所获
从WAV文件中提取样本并将其提供给AudioTrack的正确方法是什么
非常感谢你的帮助 好吧,实际上我的编码似乎还可以,因为我发现一旦我开始循环声音,它们就开始播放得很好了。我认为这与播放前必须填满音轨的缓冲区有关,而与编码无关。我将把这段代码留作一个编码正常的例子,也许,除非有人认为删除它更好。
final short[] hiclick = getWavDataBytesAsPCM16(getResources().openRawResourceFd(R.raw.created_hi_click_188_samples));
m_audioTrack.write(hiclick, 0, hiclick.length);