美文网首页
mac下ijkplayer编译 支持RTMP、HTTPS

mac下ijkplayer编译 支持RTMP、HTTPS

作者: 关阝 | 来源:发表于2020-08-12 16:49 被阅读0次

    在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

          本文链接:https://www.haomeiwen.com/subject/npnprktx.html