VideoView在慢速网络上冻结实时流

时间:2015-07-09 08:07:08

标签: android android-videoview

我正在使用VideoView使用HLS播放远程视频 当视频是VOD(视频点播 - 只是一个远程视频文件,没有直播)时,一切正常。

当我尝试播放直播时出现问题 如果我在快速网络(wifi或3g / 4g)上,一切都按预期工作。

例如,如果我尝试通过边缘网络播放视频,则视频开始加载,这没关系。 但如果我点击后退按钮,整个应用程序就会冻结。奇怪的是,根本没有显示ANR对话框,冻结有时会持续20秒以上

这是代码

...
 MediaController mediaController = new MediaController(this);
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(Uri.parse(Utility.sanitizeUrl(videoUrl)));
    videoView.setOnErrorListener(new MediaPlayer.OnErrorListener()
    {
        @Override
        public boolean onError(MediaPlayer mp, int what, int extra)
        {
            tvError.setVisibility(View.VISIBLE);
            videoView.setVisibility(View.GONE);
            pbLoading.setVisibility(View.GONE);
            return true;
        }
    });
    //we also set an setOnPreparedListener in order to know when the video file is ready for playback
    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
        {
            public void onPrepared(MediaPlayer mediaPlayer)
            {
                // close the progress bar and play the video
                pbLoading.setVisibility(View.GONE);

                //if we have a position on savedInstanceState, the video playback should start from here
                if(savedVideoPosition > 0)videoView.seekTo(savedVideoPosition);

                if (savedVideoPosition == 0)
                {
                    videoView.start();
                }
                else
                {
                    //if we come from a resumed activity, video playback will be paused
                    videoView.pause();
                }
            }
        });
...


@Override
protected void onDestroy()
{
    super.onDestroy();
    videoView.stopPlayback();
}

我唯一可以在日志中使用的是这个 07-09 10:00:57.665 10499-10499/{package_name_removed} I/Choreographer﹕ Skipped 9565 frames! The application may be doing too much work on its main thread.

0 个答案:

没有答案