MediaPlayer loading 问题解决

     最近App需要集成视频播放功能,就这过程中遇到的问题,记录一下,给遇到相同问题同行提供参考。

1、增加loading

    开始以为是在OnBufferingUpdateListener 回调判断,最终不行。发现MediaPlayer有一个setOnInfoListener 在视频卡主缓冲

恢复的情况下,都有事件抛出,看了一下描述。明白可以使用onInfo(MediaPlayer mp, int what, int extra)里面的what来判断。

MEDIA_INFO_VIDEO_RENDERING_START 出loading ,MEDIA_INFO_BUFFERING_END 消失loading 。

2、第一帧缓冲不出loading

    按照上一步,增加了loading。发现在播放过程中,出现缓冲卡主是正常可以显示loading,以及缓冲好,消失loading。

但是如果是卡在前面的第一帧画面,不能正常出现loading画面。查看是没有MEDIA_INFO_VIDEO_RENDERING_START事件抛出。

查看onInfo,还有一个MEDIA_INFO_BUFFERING_START定义,加了一个MEDIA_INFO_BUFFERING_START,也显示loading,

消失还是等到MEDIA_INFO_BUFFERING_END。

3、初始化过程不出loading

    发现在初始化过程中,等待十几秒,卡在MediaPlayer 的prepare过程,更疑惑的是,这个时候,loading也不显示。

分析发现还有prepareAsync()方法,一个是同步一个异步,改成异步,在回调的过程里面mMediaPlayer.start()。这样发现loading也可以正常显示了。

 

4、seek to不准确

   我的需求是seek to 某个时间点,达到续播的效果。但在实际过程中,发现根本不准。开始以为是记录的位置有错误。

进过一系列调试,发现时间是准确的。在我这个视频中,前六秒都是一个点,只有大于六秒才换到新一个点。觉得超级诡异。

通过网上搜索,发现seek to是和视频有关系的,具体是关键帧,不是跳到某个时间点。

 

posted @ 2018-01-24 11:08  忙里偷闲  阅读(1186)  评论(0编辑  收藏  举报
广东财富东方律师事务所