Android Gapless Audio Looping

时间:2014-11-18 18:30:28

标签: java android audio

这个问题已被多次询问,但到目前为止,我已尝试过每一个解决方案,包括自定义解决方案,结果并不理想。

我正试图在应用程序中实现一致的无间隙音频循环,到目前为止我只是不一致地实现了它。

我有一个应用程序可循环播放14秒/ 14200毫秒的音频文件。 (我把它们全部输出到.ogg,长度都是一样的。

mediaPlayer.setLooping(真);无论文件格式如何,都无法实现无间隙循环。我为每个解决方案尝试过.mp3,.wav和.ogg。

mediaPlayer1.setOnCompletionListener和2个媒体播放器之间的交替也是如此。

我的自定义解决方案(目前是我最好的解决方案)是:

我计算文件的持续时间(以毫秒为单位)(14200),并启动一个可在14200 - 30毫秒内延迟启动的可运行文件。然后,play3 runnable将启动mediaplayer1并继续循环。

相关代码:

    durationHandler.postDelayed(play2, mediaPlayer1.getDuration() - 30);
    mediaPlayer1.start();

}

private Runnable play2 = new Runnable() {
    public void run() {
        durationHandler.postDelayed(play3, mediaPlayer2.getDuration() - 30);
            mediaPlayer2.start();

    }
};

这段代码实际上很有效,但不是每次都有。例如,第一个循环可能有一点间隙,但第二个循环完美地超时。我的猜测是,这与实际手机处理代码的时间更长或更短有关。这有意义吗?

我试过了soundpool,它不能用于14秒的文件。

如果有人对CONSISTENT无缝循环14秒文件有任何其他建议,我很乐意听到它们。

0 个答案:

没有答案