Ubuntu 编译 哔哩哔哩 IJKPlayer so库,并支持RTSP

1. 环境与配置

1.1 系统版本

系统我这里使用的Ubuntu 18.04.4 LTS

1.2 更新软件源列表

sudo apt update

1.3 安装git

sudo apt install git

1.4 安装jdk

我这里使用的是openjdk 11.0.9.1

sudo apt install openjdk-11-jdk

1.5 安装yasm

sudo apt install yasm

1.6 下载NDK

ndk下载地址 : https://github.com/android/ndk/wiki/Unsupported-Downloads
这里我下载的是r14b : https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
Ubuntu 编译 哔哩哔哩 IJKPlayer so库,并支持RTSP_第1张图片

wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
sudo apt install zip  //如果没有安装zip,需要安装zip进行解压
unzip android-ndk-r14b-linux-x86_64.zip 

1.7 下载Android SDK

Android SDK 下载地址 : http://tools.android-studio.org/index.php/sdk
Ubuntu 编译 哔哩哔哩 IJKPlayer so库,并支持RTSP_第2张图片

wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
tar -zxvf android-sdk_r24.4.1-linux.tgz

1.8 配置NDK和Android SDK的环境变量

下载好ndkAndroid Sdk,并解压后,打开 /etc/profile 文件

vim /etc/profile

在末尾加上

export ANDROID_SDK=你解压后的SDK路径
export ANDROID_NDK=你解压后的NDK路径

最后,刷新环境变量

source /etc/profile

2. 下载并配置IJKPlayer

2.1 使用git下载IJKPlayer

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android //github下载比较慢,不推荐
推荐使用码云上的地址

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

2.2 切换到k0.8.8 tag

cd ijkplayer-android
git checkout -b latest k0.8.8

k0.8.8 是 github 上最新的 tag了,后面的更新没有再打tag了,不知道为啥

2.3 修改init-android.sh

此处,仅保留需要的架构,这里我保留armv7aarm64

#pull_fork "armv5"
pull_fork "armv7a"
pull_fork "arm64"
#pull_fork "x86"
#pull_fork "x86_64"

同时,修改下IJK_FFMPEG_UPSTREAMIJK_FFMPEG_FORK的下载路径,也使用码云的路径

IJK_FFMPEG_UPSTREAM=https://gitee.com/yuazhen/FFmpeg.git
IJK_FFMPEG_FORK=https://gitee.com/yuazhen/FFmpeg.git

init-android.sh里会执行./init-android-libyuv.sh./init-android-soundtouch.sh,这里会去下载libyuvsoundtouch库的代码。
这两个库不大,可以不修改下载地址,但如果发下下载不下来的话,可以再改下这两个路径,进行下载。

2.4 执行init-android.sh

修改保存后,执行init-android.sh文件

./init-android.sh

这里需要注意,打印的日志里的这几个库,都要下载完毕,如果因为网络问题,没有下载成功,就多试几次,或者改之前说的下载地址。
Ubuntu 编译 哔哩哔哩 IJKPlayer so库,并支持RTSP_第3张图片

2.5 修改module.sh

如果你播放器需要支持rtp、tcp、rtsp等,需要修改module.sh配置文件,如果不需要修改,则跳过该步骤
进入ijkplayer-android/config路径,修改module.sh
这里,我需要支持RTSP
所以修改如下配置 (即允许rtp、打开rtsp音视频分离器)

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"  //这个需要我们自己输入
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"  //这个只需要我们将disable 改为enable 

2.6 修改compile-ffmpeg.sh

完成后,进入到 android/contrib目录

cd android/contrib

修改compile-ffmpeg.shFF_ACT_ARCHS_32只保留armv7aFF_ACT_ARCHS_64 只保留armv7aarm64

FF_ACT_ARCHS_32="armv7a"
FF_ACT_ARCHS_64="armv7a arm64"

2.7 执行compile-ffmpeg.sh

首先,先清理缓存

./compile-ffmpeg.sh clean

然后,执行编译ffmpeg

./compile-ffmpeg.sh all

执行完之后,就会在ijkplayer-android/android/contrib/build/ffmpeg-armv7a/output 目录下生成 ffmpeg 的头文件和库文件

3. 编译IJKPlayer

上面的部分,都是配置和编译 ijkplayer 所需要的东西,下面才是真正编译ijkplayer

3.1 修改compile-ijk.sh

返回到上一层目录ijkplayer-android/android,修改compile-ijk.sh文件,ACT_ABI_32仅保留armv7aACT_ABI_64仅保留armv7aarm64

ACT_ABI_32="armv7a"
ACT_ABI_64="armv7a arm64"

3.2 执行compile-ijk.sh

这个时候,就开始真正编译ijkPlayer

./compile-ijk.sh all

编译成功后,可以在ijkplayer-android/android/ijkplayer/ijkplayer-arm64/src/main/libs/arm64-v8aijkplayer-android/android/ijkplayer/ijkplayer-armv7a/src/main/libs/armeabi-v7a路径下分别发现有3个so
Ubuntu 编译 哔哩哔哩 IJKPlayer so库,并支持RTSP_第4张图片
就此,就编译成功了

4. IJKPlayer so库下载

如果不想自己编译,且想要支持RTSP功能,可以直接下载我已经编译好的so库。
ijkPlayer so库下载地址,支持RTSP : https://download.csdn.net/download/EthanCo/85650824

5. Android IJKPlayer RTSP demo 下载

也可以直接下载这个Demo,亲测播放RTSP视频流没有问题
Android IjkPlayer 播放RTSP视频流 Demo
如果不确定RTSP是否可用,可以自己搭建一个RTSP的环境,详见我的另一篇博客 :
windows环境下,搭建RTSP视频推流服务器

参考
编译Android Ijkplayer以及问题
ijkplayer SDK k0.8.8 编译 rtsp播放协议

你可能感兴趣的:(NDK,ubuntu,android,编译,ijkPlayer,RTSP)