美文网首页
ijk编译so踩坑

ijk编译so踩坑

作者: Bug_Maker001 | 来源:发表于2023-01-10 11:29 被阅读0次

    ijk人家提供了一系列的版本,可以直接导入

    dependencies {
        # required, enough for most devices.
        compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
     
        # Other ABIs: optional
        compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'
        compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
        compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
        compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
        compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'
    
        # ExoPlayer as IMediaPlayer: optional, experimental
        compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
    }
    

    但是呢,不支持https的视频链接,就是这么神奇
    不过,人家提供了源码让你自己去编译
    1、首先安装环境,人家也提供了方法

    # install homebrew, git, yasm
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    brew install git
    brew install yasm
    
    # add these lines to your ~/.bash_profile or ~/.profile
    # export ANDROID_SDK=<your sdk path>
    # export ANDROID_NDK=<your ndk path>
    
    # on Cygwin (unmaintained)
    # install git, make, yasm
    

    官方指定的ndk版本是NDK r10e,我这里用的是r13b,也是可以的,但是更高的版本貌似会有问题

    2、然后下载源码
    https://github.com/bilibili/ijkplayer.git
    创建本地分支
    git checkout -B latest k0.8.8
    3、怎么编译
    编译前选择你的配置,对应怎么选择,开源工程也有标注,这里使用默认的

    cd config
    rm module.sh
    ln -s module-default.sh module.sh
    

    初始化openSSL和FFMPEG
    如果你想要更改编译ffmpeg4.0分支代码,怎么做呢?
    打开init-android.sh,修改指定的ffmpeg仓库的对应commit就好


    image.png

    配置改好了,执行初始化脚本,下载对应仓库资源了

    ./init-android-openssl.sh
    ./init-android.sh
    

    然后执行编译

    ./compile-openssl.sh clean//清除
    ./compile-ffmpeg.sh clean//清除
    ./compile-openssl.sh all//编译
    ./compile-ffmpeg.sh all//编译
    

    在这中间我遇到了两个问题:
    第一个问题:Unknown option “–disable-ffserver”
    Unknown option “–disable-vda”
    解决:

    将config/module.sh中的
    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda" 
    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
    注释了就可以了
    在module.sh 最底部增加以下两行
    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
    export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bzlib"
    

    第二个问题:ERROR: Unknown host CPU architecture: arm64
    网上大神说是因为是因为电脑是m1的芯片,所以编译有问题
    解决:修改ndk-build文件,改为

    #!/bin/sh
    DIR="$(cd "$(dirname "$0")" && pwd)"
    arch -x86_64 /bin/bash $DIR/build/ndk-build "$@"
    
    image.png

    4、编译生成最后so
    返回Android目录下,执行
    ./compile-ijk.sh all
    好了,最后so就在ijkplayer对应的架构下面

    相关文章

      网友评论

          本文标题:ijk编译so踩坑

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