mac下ijkplayer编译 支持RTMP、HTTPS

在mac下编译ijkpleyer

安装sdk

在https://www.androiddevtools.cn/
或者https://android-sdk.en.softonic.com/mac
下载sdk,不行的话就自行百度吧。
把sdk放在 /Users/用户名/Library/Android/sdk
然后打开终端输入:

open -e .bash_profile

配置sdk环境变量

#Android SDK环境变量
exprot ANDROID_HOME=/Users/用户名/Library/Android/sdk/sdk文件夹
exprot PATH=$PATH:$ANDROID_HOME/tools
exprot PATH=$PATH:$ANDROID_HOME/platform-tools

安装ndk

ndk下载
ndk版本最好是在r10e 或者 r14b,网上说在这两个版本之间的其他版本也可以,但用其他版本编译会出问题。我是用android-ndk-r14b编译成功了,其他的也没试过。把下载的ndk放在 /Users/用户名/Library/Android/ndk
然后打开终端输入:

open -e .bash_profile

配置ndk环境变量

#Android NDK环境变量
export PATH=${PATH}:/Users/用户名/Library/Android/ndk/ndk文件夹(android-ndk-r14b)
ANDROID_NDK=/Users/用户名/Library/Android/ndk/ndk文件夹(android-ndk-r14b)
export ANDROID_NDK

在终端输入一下代码使配置生效:

source .bash_profile

如果没有生效,重启一下

安装homebrew

官网上的方法,在终端输入

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果上面的安装不了,可以试一下下面的国内镜像地址

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装git和yasm

brew install git
brew install yasm

下载源码

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

进入 ijkplayer 目录,切换到最新分支(0.8.8)

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

初始化ffmpeg 依赖库

./init-andorid.sh

添加https支持,不需要的直接跳过

./init-android-openssl.sh

如果是其他平台,运行相应平台的脚本

./init-andorid.sh会去 clone 需要的 ffmpeg 仓库,./init-android-openssl.sh去远程仓库拉取openssl的远程代码,这两步都需要等待一段时间,中途可能会出现如下错误导致 clone 失败

fatal: 过早的文件结束符(EOF)

据说是 clone 的项目文件太大,git 传输大小限制,修改git配置

git config http.postBuffer 524288000

不过我修改了还是没用,还是会出现clone失败的情况,反正就是多试几次总有成功的时候。我为了初始化ffmpeg 依赖库添加https支持试了几十次,花了快一个星期不容易啊!

配置编解码器格式支持

进入 config 目录,下面有四个 .sh 文件,编译时读取的是 module.sh,不过默认 module-lite.sh 映射到 module.sh 上了

  • module-default.sh 更多的编解码器/格式
  • module-lite-hevc.sh 较少的编解码器/格式(包括 hevc)
  • module-lite.sh 较少的编解码器/格式(默认情况)
# 进入 config 目录
cd config
vim module-lite.sh

我需要支持RTMP,RTSP视频格式,还要支持mulaw的音频格式,所以我做了一下修改。可以根据自己的需求进行修改
搜索rtm 找到几个 如下:

export COMMON_FF_CFG_FLAGS=”$COMMON_FF_CFG_FLAGS –enable-protocol=rtmp*”

export COMMON_FF_CFG_FLAGS=”$COMMON_FF_CFG_FLAGS –enable-protocol=rtmp”

export COMMON_FF_CFG_FLAGS=”$COMMON_FF_CFG_FLAGS –enable-protocol=rtmpt”

如果前面有disabled的 修改为enable

添加alaw,mulaw音频格式支持

#add pcm_alaw pcm_mulaw
        export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=pcm_alaw"
        export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=pcm_mulaw"

添加RTSP支持

#add rtsp support
        export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
        export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=sdp"
        export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtp"

修改完成后:

# 删除当前的 module.sh 文件
rm module.sh
​
# 创建软链接 module.sh 指向 module-lite.sh
ln -s module-lite.sh module.sh

编译 openssl

# 进入 android/contrib 目录
cd android/contrib
​
# 清除 openssl 的编译文件
./compile-openssl.sh clean
​
# 编译 openssl
./compile-openssl.sh all

编译 ffmpeg

# 清除 ffmpeg 的编译文件
./compile-ffmpeg.sh clean
​
# 编译 ffmpeg
./compile-ffmpeg.sh all

编译完成后回到 ../ijkplayer/android/ 目录下,继续执行下面指令

cd ..
./compile-ijk.sh all

编译的时候可能会出现无法验证开发者的问题,可以把Gatekeeper禁用掉,编译完成之后再启用

启用Gatekeeper,不显示“任何来源“选项(默认不显示)
sudo spctl --master-enable
禁用Gatekeeper,显示“任何来源”选项
sudo spctl --master-disable

完成之后,在 ijkplayer/android/ijkplayer/ 目录下有对应各个平台的依赖库

编译之后的so文件需要的自行取用: ijkPlayer0.8.8 支持rtmp https so文件
密码: r6g1

你可能感兴趣的:(mac下ijkplayer编译 支持RTMP、HTTPS)