gpt4 book ai didi

android - 在 Android 中使用 AudioTrack 播放 WAV 文件

转载 作者:IT老高 更新时间:2023-10-28 22:20:57 25 4
gpt4 key购买 nike

我正在使用 Android,试图让我的 AudioTrack 应用程序播放 Windows .wav 文件 (Tada.wav)。坦率地说,这不应该这么难,但我听到了很多奇怪的东西。该文件保存在我手机的迷你 SD 卡上,读取内容似乎没有问题,但是当我播放文件时(我只是 PRETTY SURE 正确的参数),我得到了几秒钟的白噪声在声音似乎将自己分解为可能正确的东西之前。

我已经成功地在手机上录制并播放了我自己的声音——我按照本例中的说明创建了一个 .pcm 文件:

http://emeadev.blogspot.com/2009/09/raw-audio-manipulation-in-android.html

(没有向后屏蔽)...

有人对网络上有关在 Android 上播放 .wav 文件的示例有一些建议或了解吗?

谢谢,R.

最佳答案

我偶然发现了答案(坦率地说,通过尝试 &^@!我认为不会起作用),以防万一有人感兴趣...在我的原始代码中(源自原始链接中的示例post),从文件中读取数据,如下所示:

    InputStream             is  = new FileInputStream       (file);
BufferedInputStream bis = new BufferedInputStream (is, 8000);
DataInputStream dis = new DataInputStream (bis); // Create a DataInputStream to read the audio data from the saved file

int i = 0; // Read the file into the "music" array
while (dis.available() > 0)
{
music[i] = dis.readShort(); // This assignment does not reverse the order
i++;
}

dis.close(); // Close the input stream

在这个版本中,music[] 是 SHORTS 数组。所以,readShort() 方法在这里似乎很有意义,因为数据是 16 位 PCM ......但是,在 Android 上,这似乎是问题所在。我将该代码更改为以下内容:

     music=new byte[(int) file.length()];//size & length of the file
InputStream is = new FileInputStream (file);
BufferedInputStream bis = new BufferedInputStream (is, 8000);
DataInputStream dis = new DataInputStream (bis); // Create a DataInputStream to read the audio data from the saved file

int i = 0; // Read the file into the "music" array
while (dis.available() > 0)
{
music[i] = dis.readByte(); // This assignment does not reverse the order
i++;
}

dis.close(); // Close the input stream

在这个版本中,music[] 是一个字节数组。我仍然告诉 AudioTrack 它是 16 位 PCM 数据,我的 Android 似乎没有将字节数组写入这样配置的 AudioTrack 的问题......无论如何,它最终听起来是正确的,所以如果有人else 想在他们的 Android 上播放 Windows 声音,出于某种原因,这就是解决方案。啊,字节序……

R.

关于android - 在 Android 中使用 AudioTrack 播放 WAV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3925030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com