如何减少流媒体应用的缓冲时间?

问题描述 投票:0回答:1

我正在构建一个Android应用程序,它应该从URL流式传输在线广播电台。

我目前正在进行演示,我从在线教程中获得了很多帮助,但我遇到了问题。

当我点击NEXT按钮时,它应该从另一个URL获取它的音频,这使它具有更改电台的效果,但是它需要花费太多时间,而且大多数时候它似乎不起作用。

有没有什么方法可以把时间缩短95%因为我希望它几乎立即开始你点击下一个按钮

下一个按钮的代码

b_next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               mediaPlayer.stop();
                mediaPlayer.reset();
                try {
                    mediaPlayer.setDataSource("http://stream.radioreklama.bg/veronika.opus");
                    mediaPlayer.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                mediaPlayer.start();
            }
        });
android streaming android-mediaplayer buffering online-radio
1个回答
1
投票

问题可能不是缓冲 - 例如,服务器端可能会有一些缓慢的启动时间。

无论哪种方式,如果你想要监控缓冲,就会有一个回调提供给MediaPlayer,它将执行此操作 - 'OnBufferingUpdateListener.onBufferingUpdate()'。

从MediaPlayer文档(https://developer.android.com/reference/android/media/MediaPlayer.html#setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)):

处于Started状态时,如果事先通过setOnBufferingUpdateListener(OnBufferingUpdateListener)注册了OnBufferingUpdateListener,则内部播放器引擎会调用用户提供的OnBufferingUpdateListener.onBufferingUpdate()回调方法。此回调允许应用程序在流式传输音频/视频时跟踪缓冲状态。

加速跨平台切换流的一种常用技术是预先准备下一个流。

对于你的情况,你需要第二个媒体播放器,你可以初始化并转移到准备状态,甚至可能寻找一个点,然后一旦你停止另一个播放它。

对于直播流来说,这会有点困难,因为你无法以同样的方式看到某一点。您可以尝试让第二个播放器播放但音量调低,尽管这显然效率不高,除非您有一些可靠的方法来预测用户何时即将切换。

© www.soinside.com 2019 - 2024. All rights reserved.