本篇文章是基于k0.7.7.1进行集成的,如在使用上有出入需要对比版本号
Android/iOS video player based on FFmpeg n3.2, with MediaCodec, VideoToolbox support.
是基于FFMpeg n3.2进行集成的。
ijkplayer是bilibili的一个开源的视频播放器,本篇文章主要讲解如何用ijkplayer播放在线视频。ijkplayer也支持本地视频,方法都大同小异,要是大家有这方面需求的话,可以去官网上下载Demo查看详细说明。
ijkPlayer github地址,跳转。
在ubuntu编译源码 ,需要NDK,SDK
xport ANDROID_SDK=~/home/ijkplayer/sdk export ANDROID_NDK=~/home/ijkplayer/android-ndk-r10e export PATH=$PATH:$ANDROID_SDK:$ANDROID_NDK:$ANDROID_SDK/platform-tools/
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android cd ijkplayer-android git checkout -B latest k0.7.7.1 ./init-android.sh cd android/contrib ./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all cd .. ./compile-ijk.sh all
如果 没有什么特殊需求的话,可以直接引入依赖库
app/build.gradle
dependencies { # required, enough for most devices. compile 'tv.danmaku.ijk.media:ijkplayer-java:0.7.7.1' compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.7.7.1' # Other ABIs: optional compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.7.7.1' compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.7.7.1' compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.7.7.1' compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.7.7.1' # ExoPlayer as IMediaPlayer: optional, experimental compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.7.7.1' }
要想直接集成使用的话,需要引入官司方demo中的几个类。目录结构如下
调用代码部分如下:
videoView = (IjkVideoView) findViewById(R.id.videoview); // init player mSettings = new Settings(this); IjkMediaPlayer.loadLibrariesOnce(null); IjkMediaPlayer.native_profileBegin("libijkplayer.so"); videoView.setVideoURI(Uri.parse("http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/hc.yinyuetai.com/D046015255134077DDB3ACA0D7E68D45.flv")); videoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() { @Override public void onPrepared(IMediaPlayer mp) { videoView.start(); } });集成完毕,后续还会继续深入学习,大家一起进步。
gitHub 地址:https://github.com/dyoungliuwang/IjkPlayerDemo