Ijkplayer Android介绍

Ijkplayer Android目录结构

Ijkplayer Android可以将该工程导入android studio进行编译,当它下载好需要的资源文件(例如sdk build tool,gradle等)就可以进行编译了,该工程的目录结构如下图所示:
Ijkplayer Android介绍_第1张图片

链接库:

ijkplayer-arm64,ijkplayer-armv5,ijkplayer-armv7a,ijkplayer-x86,ijkplayer-x86_64是不同体系架构的动态链接库,在当前工程结构里面作为一个模块,如果不想做兼容多平台问题,可以删除其他目录结构,单独保留自己需要的平台目录。

IjkExoMediaPlayer

ijkplayer-exo,通过安装ijkplayer可以发现setting里面可以选择不同player来渲染多媒体显示,该模块下面就是一个MediaPlayer

ijkplayer 通用API

ijkplayer-java,这里面是通用的API接口,里面最主要的是IMediaPlayer,它也是用来渲染显示多媒体的,该模块的目录结构如下所示:
Ijkplayer Android介绍_第2张图片

ijkplayer 实例

ijkplayer-sample是源代码中的实例,它的目录结构如下所示:
Ijkplayer Android介绍_第3张图片
其中实现了类似于Android VideoView的IjkVideoView,我们也可以根据自己需求实现自己的VideoView,用来渲染显示多媒体。

ijkplayer使用

资源文件

在资源文件中添加IjkVideoView自定义控件,用来渲染显示多媒体。如下图所示:

 IjkVideoView
     android:id="@+id/video_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_gravity="center">
 </tv.danmaku.ijk.media.sample.widget.media.IjkVideoView>

Java代码调用

如果需要进行多媒体播放,其实和Android提供的多媒体播放api差不多,具体流程如下:

初始化

加载native底层库

IjkMediaPlayer.loadLibrariesOnce(null);
IjkMediaPlayer.native_profileBegin("libijkplayer.so");

设置播放uri

设置uri,可以是rtmp,rtsp,http等,native ffplay代码中会根据该uri匹配不同的流媒体协议,具体参考ffplay。

mVideoView.setVideoURI(mVideoUri);

开始播放

mVideoView.start();

停止播放

if (mBackPressed || !mVideoView.isBackgroundPlayEnabled()) {
    mVideoView.stopPlayback();
    mVideoView.release(true);
    mVideoView.stopBackgroundPlay();
  } else {
      mVideoView.enterBackground();
}
IjkMediaPlayer.native_profileEnd();

总结

具体代码分析可以到git下载代码分析,如果需要体验,可以下载该demo(apk文件),具体流程分析可以参考ijkplayer阅读笔记。

你可能感兴趣的:(ijkplayer)