OGG Audio to AudioTrack

时间:2011-07-08 21:18:25

标签: android audio playback slowdown

我正在尝试将OGG文件加载到AudioTrack上,以便我可以管理播放速率并播放它。但是,我在“track [voiceIndex] = dis.readByte();”行中得到一个空指针异常。我想它超出了轨道阵列的范围。老实说,我对数据流知之甚少,所以我只是复制了这段代码。我很难理解它。任何帮助将不胜感激,谢谢。

.....
private AudioTrack voice = null;
private InputStream is = null;
private byte[] track = null;
private BufferedInputStream bis = null;
private DataInputStream dis = null;
.......
int playbackRate = 0;
    is = getResources().openRawResource(sentences[index].voice);
    bis = new BufferedInputStream(is, 8000);
    dis = new DataInputStream(bis);

    while (dis.available() > 0){
        track[voiceIndex] = dis.readByte();
        voiceIndex++;
    }
    voice.write(track, 0, track.length);
    playbackRate = voice.getPlaybackRate();
    voice.play();

1 个答案:

答案 0 :(得分:0)

您可以使用MediaExtractor获取音频数据:link,但它可以从API级别16获得。在更早的版本中,您可以使用一个外部库来解码音频。