一、设计方案
一个简单的拉流播放器,需要具备以下功能:
- 将直播流拉取到设备上并展现出来
- 保证播放当前直播流的音视频是同步的
- 播放视频时可以切换全屏幕与非全屏
二、定义播放器的生命周期
在定义播放器的生命周期们需要做到以下两步:
1. 先定义一下播放器的事件
2. 定义播放器展示的控件
1. 定义播放器事件
一个播放器,需要定义出来相应的播放器的事件,最基本的播放器的操作就是:播放、暂停、停止。示例代码如下:
/**
* 播放器抽象类
*/
public abstract class Player {
protected boolean play = false;
public void play() {
this.play = true;
}
public void pause() {
this.play = false;
}
public void stop() {
this.play = false;
}
}
2. 定义SurfaceView来显示拉取的视频流
这里其实和原生的MediaPlayer及Ijkplayer是一样的,都是监听Surface的状态来控制播放器:创建,暂停,停止并release。
这里我们使用的控件是SurfaceView,创建一个VideoSurfaceView继承SurfaceView,并实现SurfaceHolder.Callback接口:
@Override
pub