编译和使用 ijkplayer
Posted 胡刚2016
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译和使用 ijkplayer相关的知识,希望对你有一定的参考价值。
1. 下载git
sudo apt install git
2. 下载 和 安装 jdk8
2.1 下载
https://www.oracle.com/java/technologies/downloads/#java8
2.2 解压
#解压
tar -zxvf jdk-8u333-linux-x64.tar.gz
2.3 将解压后的jdk移动到 /usr/lib目录下
#在 /usr/lib 目录下创建 jdk 文件夹
sudo mkdir /usr/lib/jdk
#将解压后的jdk移动到 /usr/lib/jdk目录下
sudo mv jdk1.8.0_333 /usr/lib/jdk
#查看是否移动成功
ls /usr/lib/jdk
2.4 配置java环境变量
2.4.1 安装gedit
sudo apt-get install gedit
sudo gedit /etc/profile
2.4.2 在文件末尾添加下面的几行
#set java env
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_333
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
2.4.3 执行命令使得环境变量生效
source /etc/profile
2.4.4 测试 java 是否安装成功
java -version
3. 下载 androidSDK
3.1 下载
wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
3.2 解压
tar -xvf android-sdk_r24.2-linux.tgz
3.3 更新Android SDK
cd android-sdk-linux
tools/android update sdk --no-ui
一直输入 y 即可,期间会下载很多版本的 sdk,我们只需要下载完 4.x 版本就可以 ctrl+c 手动停止下载了。
3.4 配置环境变量
sudo gedit /etc/profile
在末尾添加下面几行
注意:这里的路径一定要设置成你自己的,不要照抄
# Android sdk
export ANDROID_SDK=/home/hg/android-sdk-linux
export PATH=$ANDROID_SDK:$PATH
3.5 使环境变量生效
source /etc/profile
4. 下载 和 配置 Android NDK
4.1 下载
cd ~
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
4.2 解压
unzip android-ndk-r14b-linux-x86_64.zip
4.3 配置环境变量
sudo gedit /etc/profile
按照自己的路径配置
# set ndk environment
export ANDROID_NDK=/home/hg/android-ndk-r14b
export PATH=$ANDROID_NDK:$PATH
使环境变量生效
source /etc/profile
校验是否⽣效
ndk-build --version
5. 下载配置 ijkplayer
5.1 下载ijkplayer
cd ~
mkdir ijkplayer
cd ijkplayer
git clone https://gitee.com/mirrors/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest
5.2 修改init-android脚本
从github下载ffmpeg、libyuv超级慢,这⾥改成码云的链接
cd ~/ijkplayer/ijkplayer-android
gedit init-android.sh
需改两行git的链接为 https://gitee.com/yuazhen/FFmpeg.git
并且注释掉除了 armv7a 以外的芯片架构
5.3 修改 init-android-libyuv.sh
gedit init-android-libyuv.sh
修改这两行 git 链接为 https://gitee.com/yuazhen/libyuv.git
5.3 执行 init-android.sh
这个脚本会下载 ffmpeg-armv7a libyuvbase libyuv soundtouch 等库
./init-android.sh
5.4 修改 init-android-openssl.sh
gedit init-android-openssl.sh
修改为码云链接 https://gitee.com/yuazhen/openssl.git
并且注释掉除了 armv7a 以外的
5.5 执行 ./init-android-openssl.sh
会下载 openssl base 和 openssl armv7a
./init-android-openssl.sh
6.配置编解码器格式
cd config/
gedit module-default.sh
在文件末尾添加下面两行
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bzlib"
rm module.sh
ln -s module-default.sh module.sh
7. 编译openssl
7.1 编译
cd /home/hg/ijkplayer/ijkplayer-android
cd android/contrib/
./compile-openssl.sh clean
./compile-openssl.sh armv7a
执行到最后一个命令 ./compile-openssl.sh armv7a 会报错,如下
ERROR: Failed to create toolchain.
原因是没安装 python
7.2 安装 python 解决报错
sudo apt-get install python
7.3 再次执行编译
# 清除 openssl 的编译⽂件
./compile-openssl.sh clean
# 编译 openssl
./compile-openssl.sh armv7a
编译成功
8. 编译ffmpeg
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh armv7a
编译成功
9. 编译compile-ijk
cd ..
./compile-ijk.sh clean
./compile-ijk.sh armv7a
编译成功,生成了所有的库
10. 迁移 ijkplayer 到 android studio
10.1 压缩 ijkplayer
zip -r ijkplayer.zip ijkplayer/
10.2 将压缩后的 ijkplayer.zip 拷贝到 windows ,并解压缩
使用 android studio 打开它
11. 修改ijkplayer工程的各种配置
导入ijkplayer工程后会报错
点击下面的
不要使用自带的模拟器,因为自带的模拟器不是arm-v7a的
如果你的android studio 是 3.0 的错误很快都会解决。如果是 4.0 的那么还会有很多报错,按照下面的步骤解决即可:
11.1 修改仓库
maven
url 'https://maven.aliyun.com/repository/public/'
maven
url 'https://maven.aliyun.com/repository/google/'
google()
mavenCentral()
11.2 修改gradle版本为本地的 gradle7.0.2
11.3 修改jdk版本为本地的 jdk14
11.4 将所有module 中的 compile 修改为 implementation
再次编译后成功
11.5 增加so库配置
flavorDimensions("ijk")
splits
abi
enable true
reset()
include 'armeabi-v7a'
universalApk false
11.6 编译通过
sync 一下,然后点击编译
编译成功
但是运行后发现界面上面没有列出文件,原因应该是不能访问根目录
12. 解决不能访问目录的问题
将 path 改为本app的目录,并且在这个目录下上传一个视频
“/data/data/tv.danmaku.ijk.media.example/files/”
重新运行,可以看到列出了视频,而且可以播放
以上是关于编译和使用 ijkplayer的主要内容,如果未能解决你的问题,请参考以下文章
AndroidiOS ijkplayer编译步骤及相关问题解决
AndroidiOS ijkplayer编译步骤及相关问题解决
ijkplayer编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
ijkplayer编译 Android 版本的 ijkplayer ① ( Ubuntu 安装 Git 软件 | 下载 ijkplayer 代码 )