【其实不难】编译IjkPlayer支持Https协议/各种直播协议、Avi等视频格式

【其实不难】【MAC OS】编译IjkPlayer支持Https协议/各种直播协议、Avi等视频格式

1、 环境

Mac OS 10.13.4:其他环境后续补充,建议使用Linux/Mac环境编译
ffmpeg 0.8.8:目前最新版,如你使用的是旧版本,请仔细阅读教程正文,会有补充
Git:MacOS应该自带了git工具链,如没有请自行安装

1.5、 什么鸡儿?我只想要新的so不想知道怎么搞!

懒人下载链接:IjkPlayer-0.8.3 so库下载地址
只使用0.8.3版本,其他版本请自行编译!

2、准备工作

请务必按照下面的步骤进行配置!

①、下载NDK-r10e
下载地址:MacOS X 64-bit-android-ndk-r10e-darwin-x86_64.bin
其他版本下载地址(不建议):NDK各个版本链接
请尽量按照官方推荐使用r10e版本,否则出什么幺蛾子不管

②、安装NDK环境并配置
cd 到android-ndk-r10e-darwin-x86_64.bin下载完成的目录执行以下指令

chmod a+x android-ndk-r10e-darwin-x86_64.bin
./android-ndk-r10e-darwin-x86_64.bin

等待解压完成等到下图所示文件夹

获取这个文件夹的位置配置到环境变量中
使用vim编辑~/.bash_profile并保存
(如果使用了zsh,那么就要编辑~/.zshrc)
如果没有这个文件,请自行新建

//不要直接复制这一句,=后面要粘贴自己的路径
export ANDROID_NDK=/Users/###/android-ndk-r10e

③、配置Android SDK环境
在Android Studio中获取Android SDK的位置,如下图

同样配置到~/.bash_profile并保存
(如果使用了zsh,那么就要编辑~/.zshrc)

//不要直接复制这一句,=后面要粘贴自己的路径
export ANDROID_SDK=/Users/###/Library/Android/sdk
source ~/.bash_profile(~/.zshrc)

④、配置homebrew和yasm

//安装homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
//安装 yasm
brew install yasm

3、编译

请自行创建一个文件夹用于进行后续的操作,在该新建文件夹中执行以下指令

①、获取iIjkPlyer

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

cd ijkplayer-android

git checkout -B k0.8.3
//如果你使用的是新版,例如0.8.8版本,请执行如下指令
git checkout -B k0.8.8
//你也可以使用git tag指令来查看所有可以checkout的版本

②、自定义要支持的协议或格式(如果只想支持https、avi、flv等,请跳过这一步)

自定义要支持的协议或视频格式

通过vim或者记事本编辑该文件

这里只截取一部分,将你想要增加的协议或者格式更改为enable,例如我想支持rtp视频流只需要按照如下更改然后保存即可

③、初始化openSSL/获取FFmpeg库文件
这一步看网速,可能会比较耗时
在ijkplayer-android目录下执行

./init-android-openssl.sh  这一步是添加https协议支持,看需求是否要执行
./init-android.sh

④、编译

cd android/contrib

./compile-openssl.sh clean
./compile-ffmpeg.sh clean

# 下面这一步耗时较久
./compile-openssl.sh all //编译https支持
./compile-ffmpeg.sh all

cd ..

./compile-ijk.sh all
//如果只想支持armv7a,不要其他CPU架构可以去掉all,比较节省时间

4、查看生成文件

打开如下目录

/###/ijkplayer-android/android/ijkplayer

查看armv7a架构的.so文件

cd ijkplayer-armv7a/src/main/libs/armeabi-v7a

这里有三个so文件拷贝到自己的工程里使用即可
如果需要其他Cpu架构如x86的请到对应的目录下寻找即可

5、使用新的so库

①、解除旧的依赖

    api 'tv.danmaku.ijk.media:ijkplayer-java:0.8.3'
//    api 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.3'
//如有其他架构也要解除依赖并引入自己编译的so库

②、拷贝新的so到工程

这里需要注意,如果你使用了自定义的JniLib目录,就要拷贝到自己定义的目录下面

③、rebuild工程,然后放小电影吧!

5、致谢

感谢Bilibili工程师的无私奉献

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
ijkplayer 是一款开源的 Android 视频播放器框架,支持多种视频格式的播放。若要进行全格式编译,首先需要准备好编译环境,包括 Android NDK 和编译工具链。 接下来,我们需要进行如下步骤来进行全格式编译: 1. 下载 ijkplayer 的源代码,并解压到本地目录。 2. 进入到 ijkplayer 源代码的目录下,找到 `android` 目录,该目录下存放了所有的编译脚本和配置文件。 3. 使用 `cd` 命令进入 `android` 目录,然后执行 `./init-android.sh` 初始化编译环境,该脚本会自动下载和配置一些必要的依赖工具。 4. 执行 `./compile-ffmpeg.sh` 命令来编译 FFmpeg,这是 ijkplayer 的核心组件,支持多种视频格式的解码和播放。该脚本会自动下载 FFmpeg 的源代码,并进行编译。 5. 编译完成后,可以根据需要执行 `./compile-ijk.sh` 和 `./compile-ijkplayer.sh` 命令来分别编译 ijkplayer 的其他组件和最终的播放器库。 6. 编译完成后,在 `android` 目录下会生成 `ijkplayer-armv7a`、`ijkplayer-arm64`、`ijkplayer-x86` 等目录,分别对应不同的 CPU 架构和 ABI 类型。 7. 在项目中,可以将编译生成的库文件和相关的头文件导入到自己的工程中,然后按照 ijkplayer 的 API 来进行视频播放的开发。 需要注意的是,全格式编译可能会占用较长的时间和一定的存储空间。编译过程中如果遇到问题,可以查看编译日志和相关文档,或者参考 ijkplayer 官方的社区和论坛来寻求帮助。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值