最近工作中碰到一个问题,关于播放器播放一段视频的需求,因此查找了一些方案,在此记录一下。
背景介绍
客户在设备上把一段视频(好了,就是广告了)当作屏保进行播放,但是点击屏幕进入系统时时要退出屏保播放,进入我们的应用,然后再次进入屏保时继续进行视频播放,并且要从上次退出时播放的位置顺序播放向后循环播放。
这样一段需要,本身用Android自带的MediaPlayer或者MediaCodec进行即可播放,但是涉及到再次进入屏保应用时,还要seekto到上次播放的位置,这里就出现一个seekto不准的小问题,客户无法接受。接触音视频比较多的童鞋都知道,当要seekto到一个位置时,当前帧可能不是关键帧。所以要从该位置播放时就需要从该帧之后最近的一个关键帧开始,这时播放的位置可能不是客户想要的。假设上次播放退出时是00:00:57的位置,但是离这个位置最近是在00:00:59的位置,这时MediaPlayer播放的位置是从00:00:59开始的,客户说这个差距太大了,无法接受。那既然是恰饭人,只能想办法满足客户的需求了。那就从Seekto开始一次冒险之旅吧。
SeekTo介绍
Android播放器自己维护一个状态机,如下图:
如果不熟悉的,建议自行补救(ht