记录ijkplayer编译的一些琐碎

405 阅读3分钟
最近编译ijkplayer,碰到一些问题,这里记录一些注意点,具体使用需要百度查询.

环境准备

| 我的环境是 VMware + ubuntu(20.04.2.0),安装虚拟机,安装ubuntu。

  1. 修改linux软件源

    打开命令行,依次输入下面的命令,并按提示操作。
    1. 备份源文件
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.back
    2. 编辑源文件
    sudo gedit /etc/apt/sources.list
    在弹出的编辑器内,清空所有内容。复制下面的内容,粘贴进去。(阿里的源)
    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    3. 保存,然后关闭编辑器。
    4. 设置立即生效
    sudo apt-get update
    5. 建议执行下更新命令
    sudo apt-get update
    

    参考:修改linux软件源

  2. 安装用到的软件

    • 安装git sudo apt-get install git
    • 安装yasm sudo apt-get install yasm
    • 安装python sudo apt-get install python
      安装python是为了解决编译时会报 ERROR:Failed to create toolchain
    • 安装file,libncures,依次执行下面的命令
      sudo apt install apt-file
      sudo apt-file update
      sudo apt-file find libncurses.so.5
      sudo apt install libncurses5
      
      解决在编译ffmpeg的时候,报BFD: libncurses.so.5: cannot open shared object file: No such file or directory的问题
  3. 开发环境

image.png

     ```
    1. 下载linux jdk8,解压
    2. 修改环境变量
        sudo gedit /etc/profile
    3. 在打开的文件末尾,添加下面内容
    #set oracle jdk environment
    export JAVA_HOME=/usr/lib/jvm/jdk-14.0.1 ## 这里要注意目录要换成自己解压的jdk 目录
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH  
    4. 使环境变量马上生效
        source /etc/profile
    5. 系统注册此jdk
        sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-14.0.1/bin/java 300
    6. 测试是否安装成功
        java -version  
    ```  
  • Android Sdk 下载地址

    1. 解压sdk
    2. 更新sdk,执行下面命令(全部升级)
        `sudo tools/android update sdk --no-ui` ,如果提示 y/n ,一律输入y,回车即可。
    3. 设置环境变量
        sudo gedit /etc/profile
    4. 打开的文件末尾,添加下面内容
        #android sdk(下面路径以自己的为准)
        export ANDROID_SDK=/home/bingjiazheng/Android_SDK/android-sdk-linux 
        export PATH=${PATH}:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
    5. 使环境变量生效
        source /etc/profile
    6. 测试是否成功(如果不生效,重启一次)
        adb version
    
  • android ndk 下载地址
    (r10e 或者 r14b都行,我这里是r10e)

    1. 解压ndk(目录以自己的为准)
        sudo ./android-ndk-r10e-linux-x86_64.bin
        如果发现没有对目录操作的权限(被加了一把锁),输入 `sudo chown -R stg android-ndk-r10e`
    2. 设置环境变量
        sudo gedit /etc/profile
    3. 打开的文件末尾,添加下面内容
        #android ndk(下面路径以自己的为准)
        export ANDROID_NDK=安装ndk的路径/android-ndk-r10e/  
        export PATH=$PATH:$ANDROID_NDK
    4. 使环境变量生效
        source /etc/profile 
    5. 测试是否成功(如果不生效,重启一次)
        ndk-build -v
    
  1. 网络环境
    • 建议网络环境配置代理,提高 clone ijkplayer-android和 下载ffmpeg的速度。
    • 建议设置git网络代理,有ffmpeg,openssl等库有时候clone会报错
    //设置http、https 代理
    git config --global http.proxy http://127.0.0.1:1089
    git config --global https.proxy http://127.0.0.1:1089
    //设置socks5代理
    git config --global http.proxy socks5://127.0.0.1:1080
    git config --global https.proxy socks5://127.0.0.1:1080
    //取消设置的代理
    git config --global --unset http.proxy 
    git config --global --unset https.proxy 
    //查看git设置
    git config --global -l
    检查环境变量
    env|grep -i proxy
    

开始准备编译

1.拉取ijkplayer

1. git拉取ijkplayer  
    `git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android`
2. 进入目录  
    `cd ijkplayer-android`
3. 切换分支  
    `git checkout -B latest k0.8.8`
3. 初始化android(这里建议设置git代理,否则容易拉取失败)
    `sudo ./init-android.sh`
4. 执行下面的代码,支持https  
    `sudo ./init-android-openssl.sh`  
5. 清除和编译ffmpeg
    ```  
    cd android/contrib
    ./compile-ffmpeg.sh clean
    ./compile-ffmpeg.sh all
    ```  
6. 编译ijkplayer,加all默认编译所有架构的so库,不加默认只编译armv7a架构
    ```  
    cd ..
    ./compile-ijk.sh all
    ```  

参考:
1.Ubuntu系统下编译ijkplayer
2.参考二