【问题标题】:MediaPlayer: buffer status for internet radio stream?MediaPlayer:互联网广播流的缓冲区状态?
【发布时间】:2014-09-23 12:29:40
【问题描述】:

我正在使用 MediaPlayer 播放互联网广播流。但是,每次我开始播放流时,缓冲似乎需要大约 10 秒。有什么办法可以显示:

  1. 开始播放时的进度?例如。 GUI 中的进度条
  2. 播放后的缓冲状态? (例如,当缓冲区因某种原因耗尽时发出警告)

我尝试使用setOnBufferingUpdateListener(),但据我所知,它仅适用于持续时间已知的流。 (所以不适用于网络广播,除非我错了——它没有被解雇)

【问题讨论】:

    标签: android android-mediaplayer buffering internet-radio


    【解决方案1】:

    实现 MediaPlayer.OnInfoListener,覆盖 onInfo 方法,您可以控制 MediaPlayer 的状态,如下所示:

    @Override
    public boolean onInfo(MediaPlayer arg0, int what, int extra) {
        Log.i(LOG_TAG, "MediaPlayer INFO code = " + what + " extra=" + extra);
        if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START) {
            Log.d(LOG_TAG, "Start buffering...");
    
        } else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
            Log.d(LOG_TAG, "End buffering...");
            Log.d(LOG_TAG, "Start playing...");
    
        }
        return false;       
    }
    

    查看http://developer.android.com/reference/android/media/MediaPlayer.html 了解其他操作;)

    【讨论】:

    • 据我所知,这再次仅适用于持续时间已知的媒体。没有为无线电流触发 onInfo()
    • 我不明白你为什么这么说,因为我使用我在服务中发布的方法用于我的广播应用程序!!!!!!那你为什么这么认为???
    • 这很奇怪,唯一被调用的 MediaPlayer 回调是 onPrepared()。我会调查它,如果它有效,我会为你 +1。但我仍然想知道是否有任何方法可以确定缓冲了多少(不仅仅是开始或结束缓冲)
    • 我不知道为什么这是唯一被调用的回调,我向您保证,在我的服务中,每次从 webRadio URL 启动流时都会调用 onInfo 和 onBufferingUpdate。
    猜你喜欢
    • 2012-03-28
    • 2012-09-20
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    相关资源
    最近更新 更多