ijkplayer编译篇(Ubuntu)

  • 懒人so库

    如果有童鞋不想编译,在这里提供一个已经编译好了的so库,可自行去下载使用,https://github.com/tbxyxs/ijkplayer-so

  • 环境准备

     系统:ubuntu 17.10
     sudo apt install linuxbrew-wrapper:安装brew
     brew install git
     brew install yasm 
    
  • 配置ndk、sdk路径

    • 配置android sdk与ndk:(添加以下内容到当前用户home目录中的.bash_profile文件或.profile文件中。
      +内容:
    //add sdk:改成对应的路径即可
      export ANDROID_SDK=D:/Develop/android_sdk_install
    //add ndk:改成对应的路径即可
      export ANDROID_NDK=D:/Develop/android_sdk_install/android-ndk-r14b
      source ~/.profile  //立即生效
      
     
    
  • 同步ijkplayer源码

    git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
    cd ijkplayer-android
    git checkout -B latest k0.8.8 //k0.8.8:切换到源码版本分支上,根据版本号填写对应的版本号
    
  • 设置bash

    sudo dpkg-reconfigure dash  //弹出框后选择否(no),即使用bash。
    
  • 初始化

    sudo ./init-android.sh  //此时,它会拉取ffmpeg等对应cpu架构的代码。
    
    
  • 编译ijkplayer支持参数配置:

    • 它的主要作用就是配置一些打出来的so库包支持的功能有哪些,如:支持什么协议、支持什么音视频类型,把要支持的参数改为enable启用或disable禁用即可开启/关闭某项功能了。
    注:官方默认给了3个已经配置好的脚本,分别是:(也可自行修改里面的配置开关参数)
        module-default.sh:默认,如果你喜欢更多类型可以用这个;
        module-lite.sh:如果您更喜欢较小的二进制大小的编解码器/格式(默认情况下).
        module-lite.hevc.sh:如果您更喜欢较小的二进制大小的编解码器/格式(包括hevc功能).
        修改module.sh中的内容
        
        默认可以使用命令进行修改,如举例:修改module.sh的内容与module-default.sh一样,可以直接copy或者命令行处理:
        $:cd config //进入config目录
        $:rm module.sh//删除module.sh脚本文件
        $:ln -s module-default.sh module.sh //这里将会copy module-default.sh文件保存为module.sh文件,这就生成了一个新的module.sh脚本文件。
    
    
  • 添加https的支持:

    cd .. //返回源码根目录
    ./init-android-openssl.sh //执行该脚本文件,即可增加对https的支持
    
    
  • 清理缓存

    cd android/contrib
    ./compile-openssl.sh clean //清理openssl,如果不用支持https,则可不用清理
    ./compile-ffmpeg.sh clean//清理ffmpeg
    
    
  • 编译模块openssl

    cd android/contrib
    ./compile-openssl.sh all
    注:这有个问题(此问题在ubuntu中不会出现):
    1.编译文件文件时,在windows系统下会报:“./compile-openssl.sh:行17: $'\r': 未找到命令”等错误,这是因为windows在执行默认脚本时,当要创建xxx.sh文件脚本时,默认创建出来的文件编码格式为windows格式,需要手动去转一下这些报错的.sh脚本文件,转成unix格式,方可解决,直接用notepad++转下码就行了。
    
    
    
  • 编译模块ffmpeg

     ./compile-ffmpeg.sh all //如果想编译所有版本的so库,就跟all,如果是特定CPU架构就跟cpu架构,比如:./compile-ffmpeg.sh armv7a 
    
  • 编译最终的so包:

    cd .. //切换到源码根目录 
    ./compile-ijk.sh all //执行编译so库的脚本;all:支持所有平台,如果只想编译某一cpu架构平台,可替换成对应的平台名称即可:如:./compile-ijk.sh armv7a 
    注:不加all,默认编译只生成armv7a架构平台;
    

你可能感兴趣的:(ijkplayer编译篇(Ubuntu))