Ubuntu编译ijkplayer支持https和更多视频格式

关于ijkplayer
基于 FFmpeg n3.1 的 Android/iOS 视频播放器,支持 MediaCodec, VideoToolbox,支持 RTMP/HTTP/HTTPS 视频流播放,支持本地视频播放。
项目地址:https://github.com/Bilibili/ijkplayer
如果是使用的 Windows 系统需要先用虚拟机装个 Linux 系统,因为 ijkplayer 相关库需要在 Linux 环境下编译。

开始

1) 所需环境
* 系统:Ubuntu 17.04 (windows下安装Linux虚拟机)
* NDK:android-ndk-r13b (建议使用 r10e 以上版本)
* SDK:android-sdk

2) 打开终端,执行下面命令,安装git、vim、yasm

sudo apt-get install git
sudo apt-get install yasm
sudo apt-get install vim

3) 克隆ijkplayer代码

// 把代码clone到本地
git clone https://github.com/Bilibili/ijkplayer ijkplayer-android

4) 配置环境变量
在开始编译之前需要先配置ANDROID_SDKANDROID_NDK环境变量。
下载(步骤1处得到)完成后执行下面命令解压SDK和NDK

$ sudo tar -zxvf android-sdk_r24.4.1-linux.tgz
$ sudo mv android-sdk-linux /opt/Android

$ sudo unzip android-ndk_r13b-linux-x86_64.zip
$ sudo mv android-ndk-r13b /opt/Android/

在命令行终端中运行命令$ sudo vim /etc/profile 在文件末尾添加如下内容

export ANDROID_NDK=/opt/Android/android-ndk-r13b
export PATH=$PATH:$ANDROID_NDK
export ANDROID_SDK=/opt/Android/sdk
export PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools

完成后重启Ubuntu。

编译ijkplayer

编译之前的配置

下面三种是ijkplayer给出的配置,我这里执行的是第一种
If you prefer more codec/format

cd config
rm module.sh
ln -s module-default.sh module.sh
cd ..
cd android/contrib
# cd ios
sh compile-ffmpeg.sh clean

If you prefer less codec/format for smaller binary size (include hevc function)

cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
cd android/contrib
# cd ios
sh compile-ffmpeg.sh clean

If you prefer less codec/format for smaller binary size (by default)

cd config
rm module.sh
ln -s module-lite.sh module.sh
cd android/contrib
# cd ios
sh compile-ffmpeg.sh clean

1) 下载ijkplayer所需的FFmpeg代码

// 进入工程根目录
cd ijkplayer-android

// checkout ffmpeg 源码,默认从 https://github.com/Bilibili/FFmpeg.git checkout
./init-android.sh

2) 下载ijkplayer对https协议支持的代码

// checkout openssl android源码,默认从 https://github.com/Bilibili/openssl.git checkout
./init-android-openssl.sh

开始编译

1) 编译 openssl

// 首先 cd 到 ijkplayer/android/contrib 目录下,Android下编译脚本就放在该目录下
cd android/contrib

// 编译 openssl
./compile-openssl.sh clean
./compile-openssl.sh all

2) 编译 ffmpeg

./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

3) 编译ijkplayer生成CPU架构的so

// 返回到 ijkplayer-android/android 目录
cd ..

// 编译生成各CPU架构的so,如果不加 all 默认只生成 armv7a 架构的 so
// 编译指定架构的so:compile-ijk.sh armv7a,具体参考 .sh 文件中的 Usage
./compile-ijk.sh all

编译完成后 so 就放在 ijkplayer/android/ijkplayer/ijkplayer-xxx/src/main/libs 目录下。此时编译好的 so 是支持 https 协议的。
ijkplayer-android/android/ijkplayer 是一个 Android Studio 工程,里面有 ijkplayer 的 example 和各架构的 Library Project。
ijkplayer/android/ijkplayer 是一个 Android Studio 工程,里面有 ijkplayer 的 example 和各架构的 Library Project。
此时,把 ijkplayer-android/android/ijkplayer 导入 Android Studio ,ijkplayer-example 已经可以正常运行了。
image
4) 在自己的工程中引用 ijkplayer 和自己编译的 so
(1) 在 build.gradle 添加 ijkplayer-java 依赖

compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.4'

// compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.4' // 这个是 ijkplayer 对 exoplayer 的封装,支持webm格式视频,看项目需求是否添加

(2) 在工程 src\main 目录下新建一个 jniLibs 目录并把 so 拷贝到对应架构名称的目录下。
如果不想引入所有的so文件,可以在Module:app中加入以下代码

android {
    defaultConfig {
        ndk {
            abiFilter "armeabi-v7a"  //, 'x86', 'armeabi', 'x86_64', 'arm64-v8a'
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值