编译和使用 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/”

在这里插入图片描述
在这里插入图片描述
重新运行,可以看到列出了视频,而且可以播放
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值