转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/55670380
前言:ijkplayer,是b站工程师开源的播放器框架,基于FFmpeg及MediaCodec,内部实现软解及硬解的功能,对于没有自研底层播放器的公司,用它确实是比较合适了。关于介绍可以直接看:https://github.com/Bilibili/ijkplayer,今天主要是对ijkplayer进行编译在Android平台上运行。
首先看下效果图: gif图如下:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android cd ijkplayer-android git checkout -B latest k0.7.7.1 #最新分支
编译ffmpeg
./init-android.sh # 初始化ijkplayer中和android相关,如果是在iOS,这是就是./init-ios.sh cd android/contrib ./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all #编译ffmpeg
囧,发现pro上没有配置ndk环境。
下载ndk,还好在《手把手图文并茂教你用Android Studio编译FFmpeg库并移植》中,我把ndk-10e存到云盘中。
- 供参考下载地址见本文最下面,也可自行下载。
- 用命令 ./android-ndk-r10e-mac-x86_64.bin,就可进行进行解压,如下图:
不过并没有这么顺利, 在解压过程中出现Permission denied。 这时要改下权限,执行命令 chmod a+x ./android-ndk-r10e-mac-x86_64.bin
配置ndk环境
- 启动终端Terminal
-
进入当前用户的home目录
- 输入cd ~ 或 /Users/YourUserName
- 创建.bash_profile
- 输入touch .bash_profile
-
编辑.bash_profile文件
-
输入open -e .bash_profile 因为是为了配置NDK开发环境,输入Android NDK下目录,前面是android sdk的,可以不用动它,最终.bash_profile文件如下:
export PATH=$PATH:/Users/hejunlin/Documents/local/apache-tomcat-7.0.72/bin export PATH=${PATH}:/Users/hejunlin/Library/Android/sdk/tools export PATH=${PATH}:/Users/hejunlin/Library/Android/sdk/platform-tools export NDK_ROOT=/Users/hejunlin/AndroidStudioProjects/android-ndk-r10e export PATH=$PATH:$NDK_ROOT #for ijkplayer export ANDROID_SDK=${PATH}:/Users/hejunlin/Library/Android/sdk export ANDROID_NDK=${PATH}:/Users/hejunlin/AndroidStudioProjects/android-ndk-r10e
- 保存文件,关闭.bash_profile
-
更新刚配置的环境变量
- 输入source .bash_profile,让刚长配置生效
ndk-build测试
- 找到ndk-10e中sample目录,cd hello-jni中,执扫命令ndk-build。就会出现如下所示:
重新回到编译ffmpeg的过程:
依旧执行:./compile-ffmpeg.sh all,得到如下所示
本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/55670380
编译结束时如下:
最终,在crontrib目录下,会出现编译so所需要的各平台文件,如arm,x86。也可以指定平台,编译。
最后执行如下命令,让ijkplayer和ffmpeg打成so库及demo工程:
cd .. ./compile-ijk.sh all
执行完毕后,就会出现一个ijkplayer文件夹,为studio工程,里面包含各平台so库。导入android studio,就可以运行demo工程。
导入Android Studio,example工程运行到模拟器上:
点击Sample,进入播放测试
最后我们编译它,不是用来看看demo就完了的。我们可以改c代码,并且按如上方式重新编译成so库,如果要在其他工程中使用的话。xml中引用如下:
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?