【问题标题】:Android - MediaPlayer's on Prepare Called even before the stream is prepared on Android 4.0+Android - MediaPlayer 的 Prepare Called 甚至在 Android 4.0+ 上准备好流之前
【发布时间】:2013-07-22 07:46:46
【问题描述】:

我面临的问题是,每当我的应用在 Android 4.0+ 上播放流时,甚至在加载流之前都会调用来自 MediaPlayer.OnPreparedListenerOnPrepare 方法,因此我无法向用户指示流正在下载/缓冲。 I have already found a question of the same kind but not answered 这是我正在做的事情。

   @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
        playVideo(someRtspUrl);
    }
    private void playVideo(String url) {
        // if app is running on Google TV then change RTSP link to HLS
        if (url.contains("rtsp")) {

            // split the RTSP URL and make it as HLS
            String videoUrlParts[] = url.split("\\?");
            url = videoUrlParts[0].replace("rtsp", "http") + "/playlist.m3u8";

            if (videoUrlParts.length > 1)
                url += "?" + videoUrlParts[1];
        }   mVideoView.setVideoURI(Uri.parse(url));
        mVideoView.requestFocus();
        mVideoView.setOnCompletionListener(this);
        mVideoView.setOnPreparedListener(this); 

    }



    @Override
        public void onPrepared(MediaPlayer player) {
            dismissProgressDialog();
            mVideoView.start();
        }

此代码在 Google TV 和其他 Android 3.0+ 和

【问题讨论】:

    标签: java android video-streaming media-player android-4.2-jelly-bean


    【解决方案1】:

    我对媒体播放器没有太多经验。但是我这边有几个建议/查询

    1. 没有电话准备。如果您正在这样做,您是否尝试过 prepareAsync ?
    2. 您没有使用传递给 onPrepared 回调的媒体播放器实例。您可能尝试启动错误的媒体播放器。

    【讨论】:

    • 感谢@gvmani 的建议/查询。对于第二个,我会说我正在演奏原始/主要对象。第一个。同步准备也在工作。问题出在特定操作系统上
    【解决方案2】:

    我建议使用可用的MediaPlayer 类。与VideoView 不同,MediaPlayer 知道它的状态并为您管理更多VideoView 不提供的东西。与设置SurfaceHolder 配对以显示其中的内容非常简单。

    您只需确保正确处理状态并使用 MediaPlayer 的 prepareAsync() 调用。

    【讨论】:

    • 问题在于如果视频视图不知道其状态,那么它在 Android 3.1 及更高版本上如何正常工作。
    【解决方案3】:

    对于 Android

    他们在 4.3 中修复了这个问题。比较不同平台的 MediaPlayer 或 VideoView 代码是值得的,即 4.3 &

    【讨论】:

    • 不幸的是,情况并非如此。我也检查了 rtsp 和其他流。对于小于 4.3 的情况 它可以在 3.0 及更高版本上运行,直到问题中提到的 4.0.4 之前
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多