Windows10下Ubuntu子系统编译ijkplayer-android

由于Android支持的视频、音频解码格式比较少,大部分音视频(wma、rmvb、avi、mkv等)都需要版权,所以,很多音、视频都无法解码。对于开发人员是不能容忍的,另辟蹊径采用开源的kodi、ijkplayer等,kodi虽然功能、界面等非常强大,导致上层开发人员无法下手修改界面。所以目前我们采取移植ijkplayer。

一、我采用的是win10下的ubuntu20.0子系统i环境开发:

1、执行下列命令安装git、make、yasm: sudo apt-get install git make yasm

2、下载安装ndk、jdk、sdk。ndk选择10e版本,jdk选择18版本,sdk我选择26版本   

NDK:https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip

JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,选择Linux_x64版本   Java SE Development Kit 8u181

SDK:http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

3、sudo vi ~/.bashrc添加如下内容,后退掉子系统重新开启,导入环境变量才生效

JAVA_HOME=/home/user/jdk1.8.0_181
JRE_HOME=$JAVA_HOME/jre
JAVA_BIN=$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME PATH CLASSPATH
SDK_MANAGER=/home/user/sdk/sdk-tools/bin
ANDROID_SDK=/home/user/sdk
ANDROID_NDK=/home/user/android-ndk-r10e
export ANDROID_NDK
export ANDROID_SDK
export SDK_MANAGER
PATH=$PATH:$ANDROID_NDK:$SDK_MANAGER:$ANDROID_SDK
PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
export PATH

4、获取git仓库代码:

# 直接拉取源代码到本地
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android

# 检查更新代码,这一步是拉取分支代码 k0.x.x,可以去github上面去看最新版号,latest是你本地的版本名称
git checkout -B latest k0.8.8

# 初始化,会把ffmpeg的代码拉取到本地等等操作
./init-android.sh

cd android/contrib
./compile-ffmpeg.sh clean
# 编译ffmpeg软解码库如果选择编译平台如./compile-ffmpeg.sh armv7a,如果是全编译如下
./compile-ffmpeg.sh all

5、掉坑了,无法编译提示如下:

export: Files/WindowsApps/CanonicalGroupLimited.UbuntuonWindows_2004.2021.222.0_x64__79rhkp1fndgsc:/mnt/c/ProgramData/Oracle/Java/javapath:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program: bad variable name

这是由于ubuntu子系统引用了windows10的系统环境变量,解决方法如下:

windows10子系统$PATH 如何排除父系统%PATH%
WIN10子系统环境变量与主系统环境变量冲突

1.打开"注册表"
win + r 打开"运行",输入regedit ,
2.找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss{GUID}\Flags
把值从7 改为5。重启电脑,完成。

6、编译完ffmpeg库后,./compile-ijk.sh all or 选择./compile-ijk.sh armv7a编译自己想要的平台ijk so

7、 配置解码库格式支持是轻量级还是全部解码库:

  module-default.sh 更多的编解码器/格式
  module-lite-hevc.sh 较少的编解码器/格式(包括hevc)
  module-lite.sh 较少的编解码器/格式(默认情况)
  cd config
  rm module.sh
  ln -s module-lite.sh module.sh

不配置默认是轻量级:

 8、编译完成如下:

 9、编译成功后,会在目录下生成一个ijkplayer的工程:

 

 10、导入AndroidStudio编译生成apk即可,也可以

cd /ijkplayer-android/android/ijkplayer

$ ./gradlew build生成apk

Guess you like

Origin blog.csdn.net/VendorLinux/article/details/122362625