• ijkplayer编译 android版本


    ijkplayer源码下载地址如下:https://github.com/bilibili/ijkplayer

    下载代码,直接执行如下命令即可:

    1. $cd /data/project/ijkplayer/
    2. $git clone https://github.com/bilibili/ijkplayer.git
    3. $git checkout -B latest k0.8.8

    1 环境安装

    这里使用docker18.04进行构建(因为目前主流主要是用20.04 和 22.04版本的居多,而且因为编译再重装系统不值得,因此最便捷的方式就是使用docker来编译,效率最高),docker的环境构建如下所示:

    1. #下载ubuntu 18.04的docker镜像
    2. $docker pull ubuntu:18.04
    3. $docker images
    4. REPOSITORY TAG IMAGE ID CREATED SIZE
    5. ubuntu 18.04 5a214d77f5d7 2 years ago 63.1MB
    6. #运行docker,设置共享目录,均为/data/project/ijkplayer
    7. #使用image构建container,同时直接进入到docker中
    8. $docker run -it -v /data/project/ijkplayer:/data/project/ijkplayer --name ijkplayer_container 5a214d77f5d7 /bin/bash
    9. #退出后再次进入docker时需执行
    10. $docker start [container id]
    11. $docker exec -it [container id] /bin/bash

    之后docker的环境构建完成,接下来进入docker中编译,在docker中安装各种软件以及配置环境变量,具体如下:

    1. #安装基础软件
    2. $apt update
    3. $apt install vim openssh-server git curl wget tar unzip vim tree
    4. $apt install sudo build-essential openjdk-8-jdk yasm python
    5. #下载sdk和ndk
    6. $wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
    7. $wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
    8. #将sdk和ndk放置到正确位置
    9. $mkdir /root/android-sdk/
    10. $unzip ~/sdk-tools-linux-3859397.zip -d ~/android-sdk/
    11. $unzip android-ndk-r14b-linux-x86_64.zip -d ~/android-sdk
    12. #更新sdkmanager
    13. $cd /root/android-sdk/tools/bin
    14. $./sdkmanager --update
    15. #编辑.bashrc
    16. $vim ~/.bashrc
    17. #添加环境变量至文件尾部
    18. export ANDROID_HOME=$HOME/android-sdk
    19. export ANDROID_SDK=$HOME/android-sdk
    20. export ANDROID_NDK=$ANDROID_SDK/android-ndk-r14b
    21. #之后执行命令,使得环境变量生效
    22. $source ~/.bashrc

    环境安装和配置完成后,开始编译ijkplayer项目。

    2 编译ijkplayer项目

    首先编译项目依赖的ffmpeg项目,编译流程具体如下:

    1. #从bash切换为dash
    2. $sudo dpkg-reconfigure dash
    3. #重新配置module.sh链接,按照自己需要调整即可
    4. $cd ijkplayer源码根路径
    5. $cd config
    6. $rm module.sh
    7. $ln -s module-default.sh module.sh
    8. $cd -
    9. #开始编译ffmpeg相关库
    10. $cd android/contrib
    11. $./compile-ffmpeg.sh clean
    12. $./compile-ffmpeg.sh all
    13. #解决各种错误,使用官方ubuntu18.04配置如下即可避免编译错误
    14. $vim config/module.sh
    15. #注释掉相关配置避免报错
    16. #export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
    17. #export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda"
    18. #添加新配置避免报错
    19. export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

    至此,就可以成功编译出来依赖的ffmpeg库。编译成功后,开始编译ijkplayer,具体流程如下:

    1. $cd android
    2. $./compile-ijk.sh all

    至此,就可以成功编译出来ijkplayer工程。注意:这里编译出来的不仅仅是so库,本身就是一个Android Studio可以直接打开的工程。

    3 生成文件处理

    按需生成aar(这里以ijkplayer-java模块为例输出aar,直接制定gradlew 生成模块相关命令即可),找到so文件(方便拷贝),具体流程如下所示:

    1. #编译ijkplayer-java模块并生成aar
    2. $cd android/ijkplayer
    3. $./gradlew :ijkplayer-java:assembleRelease
    4. #对应的64位和32位库文件位置
    5. $ls -l android/ijkplayer/ijkplayer-java/build/outputs/aar/ijkplayer-java-release.aar
    6. $ls -l android/ijkplayer/ijkplayer-arm64/src/main/libs/arm64-v8a/
    7. total 11076
    8. -rwxr-xr-x 1 root root 10433400 Jun 13 05:30 libijkffmpeg.so
    9. -rwxr-xr-x 1 root root 418392 Jun 13 05:30 libijkplayer.so
    10. -rwxr-xr-x 1 root root 481352 Jun 13 05:30 libijksdl.so
    11. $ls -l android/ijkplayer/ijkplayer-armv7a/src/main/libs/armeabi-v7a
    12. total 8712
    13. -rwxr-xr-x 1 root root 8397448 Jun 13 05:29 libijkffmpeg.so
    14. -rwxr-xr-x 1 root root 297936 Jun 13 05:30 libijkplayer.so
    15. -rwxr-xr-x 1 root root 218836 Jun 13 05:30 libijksdl.so

  • 相关阅读:
    北邮 数字系统设计 14 Floating Point Number
    机器学习的原理是什么?
    leetcode-64.最小路径和
    python类对象
    OpenGL - Framebuffers
    如何用pycharm打开virtualenv、virtualenvwrapper、conda 创建环境
    基于Pytorch的图卷积网络GCN实例应用及详解3.0
    【.Net Core】上传文件-IFormFile
    电容笔和Apple Pencil的区别是什么?双十一值得入手的电容笔
    netstat命令应用和ifconfig命令应用
  • 原文地址:https://blog.csdn.net/vviccc/article/details/139663366