小编Bar*_*tho的帖子

Android:AudioTrack 在开始时发出咔哒声

我正在开发一个 Android 应用程序,我想播放一些短的声音(~ 2 秒)。我尝试过 Soundpool,但它并不适合我,因为它无法检查声音是否已经在播放。所以我决定使用 AudioTrack。

它工作得很好,但大多数时候,当它开始播放声音时,会发出“咔嗒”声。我检查了我的音频文件,它们是干净的。

我在流模式下使用音轨。我发现静态模式更适合短声音,但经过多次搜索后我仍然不明白如何使其工作。我还读到,点击噪音可能是由 wav 文件的标头引起的,因此如果我使用setPlaybackHeadPosition(int positionInFrames)函数跳过此标头(应该仅在静态模式下工作),声音可能会消失

这是我的代码(所以问题是开始时的滴答声)

    int minBufferSize = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
            AudioFormat.ENCODING_PCM_16BIT);
    audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
         AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM); 
audioTrack.play();
            int i = 0;
            int bufferSize = 2048; //don't really know which value to put
            audioTrack.setPlaybackRate(88200);

            byte [] buffer = new byte[bufferSize];
//there we open the wav file >
            InputStream inputStream = getResources().openRawResource(R.raw.abordage);
            try {
                while((i = inputStream.read(buffer)) != -1)
                    audioTrack.write(buffer, 0, i);
            } catch (IOException e) {
                // …
Run Code Online (Sandbox Code Playgroud)

audio android

5
推荐指数
1
解决办法
4559
查看次数

标签 统计

android ×1

audio ×1