WSL编译ijkplayer
创始人
2025-05-29 04:20:44
0
  1. 配置编译环境

1.配置NDK,SDK,JDK环境

①NDK使用android-ndk-r12b-linux-x86_64.zip版本(安卓官方可找到各个旧版本的NDK文件)

下载地址:https://developer.android.com/ndk/downloads/older_releases#ndk-12b-downloads

②SDK使用android-sdk_r24.4.1-linux.tgz版本

下载地址:http://tools.android-studio.org/index.php/sdk/

③JDK使用openjdk-16.0.1_linux-x64_bin.tar.gz版本

wget https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip
unzip android-ndk-r13b-linux-x86_64.zipwget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
tar -xvf android-sdk_r24.4.1-linux.tgzwget https://download.java.net/java/GA/jdk16.0.1/7147401fd7354114ac51ef3e1328291f/9/GPL/openjdk-16.0.1_linux-x64_bin.tar.gz
tar -xvf openjdk-16.0.1_linux-x64_bin.tar.gz jdk-16.0.1

把以上文件下载到本地后全部进行解压,输入命令 sudo vim /etc/profile 配置环境变量

JAVA_HOME=(解压根目录)/jdk-16.0.1
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH
#android sdk
export ANDROID_HOME=(解压根目录)/android-sdk-linux
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
#ndk
export ANDROID_NDK=(解压根目录)/android-ndk-r12b
export PATH=$ANDROID_NDK:$PATH

输入上面的代码,配置全局环境变量(请根据文件解压目录进行调整代码),输入:wq保存并退出,输入 source /etc/profile 使配置的环境生效

2.安装其他所需软件

使用apt-get install安装yasm,make,gcc,git, python(git推荐使用源码编译安装)

sudo apt-get install yasm make gcc git python

3.使用git拉取ijkplayer源码

使用命令直接拉取源码

 git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android

耐心等待代码下载完毕

github墙了的话,可以试试gitee

git clone https://gitee.com/greenleaf07/ijkplayer.git ijkplayer-android

我把脚本里的github全部替换成了gitee

4.开始编译

①cd进去上一步下载的源码文件夹内

②执行以下命令

cd ijkplayer-android
git checkout -B latest k0.8.8
cd config
rm module.sh
ln -s module-default.sh module.sh  //编译的是完整版
echo export COMMON_FF_CFG_FLAGS=\"\$COMMON_FF_CFG_FLAGS --enable-openssl\" >> module.sh

在末尾加入export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"

cd ..
./init-android.sh
./init-android-openssl.sh //如需支持https连接播放视频,请执行此步

*在执行./init-android.sh与./init-android-openssl.sh时请注意,确保脚本在执行过程中已经把全部文件下载下来,否则会影响后续所有编译步骤

③继续执行以下命令

cd android/contrib
./compile-openssl.sh clean
//请耐心等待编译完成
./compile-openssl.sh all //编译OpenSSL
./compile-ffmpeg.sh clean
//请耐心等待编译完成
./compile-ffmpeg.sh all //编译ffmpeg,如果报错:fatal error: linux/perf_event.h: No such file or directory,打开第6步中的module.sh,在末尾加入 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
cd ..
./compile-ijk.sh all  //编译生成各CPU架构的so,如果不加 all 默认只生成 armv7a 架构的 so,编译指定架构的so:compile-ijk.sh armv7a,具体参考 .sh 文件中的 Usage

④编译完成后,各平台的动态库在以下目录

(解压根目录)\android\ijkplayer\ijkplayer-(armv5/armv7a/arm64/x86/x86_64)\src\main\libs

请直接复制该目录下的整个文件夹进行使用

完整脚本

git clone https://gitee.com/greenleaf07/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
cd config
rm module.sh
ln -s module-default.sh module.sh
echo export COMMON_FF_CFG_FLAGS=\"\$COMMON_FF_CFG_FLAGS --enable-openssl\" >> module.shcd ..
./init-android.sh
./init-android-openssl.sh //如需支持https连接播放视频,请执行此步cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all 
//编译生成各CPU架构的so,如果不加 all 默认只生成 armv7a 架构的 so,编译指定架构的so:compile-ijk.sh armv7a,
//具体参考 .sh 文件中的 Usage

问题处理

3. ffmpeg-armv5/toolchain/touch': No such file or directory

Toolchain installed to /home/zinyan/ijkplayer/android/contrib/build/ffmpeg-armv5/toolchain.
touch: cannot touch '/home/zinyan/ijkplayer/android/contrib/build/ffmpeg-armv5/toolchain/touch': No such file or directory

找不到armv5 的toolchain/touch 文件和目录。需要我们安装sudo apt-get install python 。然后再尝试。

sudo apt-get install python

因为在这一步的时候,是通过python 将ffmpeg的库采用ndk 串联成一个工具链。

其实缺少的就是toolchain(工具链)。 并不是说的每个指令集下面缺乏toolchain文件夹让我们主动创建的问题。

4. check ffmpeg env 错误 bad variable name

错误如下:你也许不是出现在NVIDIA 也许出现在在Common等等。

或出现在do-compile-openssl.sh脚本中

解决方法很简单:sudo dpkg-reconfigure dash 然后在弹出的说明中,选择NO 就可以了。

sudo dpkg-reconfigure dash

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...