参考文档
github官网
ijkplayer系列
视频教程
ijkplayer视频播放器源码分析
IjkVideoView
IjkVideoView并不在IJKplayer的jar包中,这个在IJKplayer的github官网下载的代码的demo中,可以找到;
我们开发的时候,可以仿照这个IjkVideoView去创建我们自己需要的VideoView;
IjkVideoView主要作用就是把三个关键类组合起来
三个比较关键的类
IRenderView.ISurfaceHolder:负责显示视频的ui,可以是SurfaceView也可以是Textureview
IMediaplayer:播放器,可以是MediaPlayer,ExoPlayer或者IJKPlayer
IMediaController:控制界面,控制播放器,播放暂停,seek,开始;
这个和EXOPlayer的设计基本是一致的;
IjK内部创建了一个IMediaPlayer,然后AndroidMediaPlayer,IjkMediaPlayer,IjkExoMediaPlayer都要实现这个接口,这样做事为了方便方便切换播放器内核;
AndroidMediaPlayer对应MediaPlayer
IjkExoPlayer对应ExoPlayer
IjkMediaPlayer就是我们的主角;
IjkMediaPlayer:内部都是JNI调用,有点类似于MediaPlayer;
jni对应的so库就是上面三个so库,其内核应该就是FFMPEG;
状态机: