编译和使用 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编译步骤及相关问题解决

Swift基础--ijkplayer编译

ijkplayer编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )

ijkplayer编译 Android 版本的 ijkplayer ① ( Ubuntu 安装 Git 软件 | 下载 ijkplayer 代码 )

ubuntu 14 编译视频第三方库ijkplayer,可以在winows下使用