Android 编译 ijkplayer

Android 编译 ijkplayer_第1张图片
Bilibili

引言:主要是因为刚开始接触的时候整个人都是懵逼呵呵的。

时间:2018年03月27日

作者:JustDo23

官方:https://github.com/Bilibili/ijkplayer

基于:Mac OS

01. 简介

  1. Android/iOS video player based on FFmpeg , with MediaCodec, VideoToolbox support.
  2. Video player based on ffplay
  3. remove rarely used ffmpeg components to reduce binary size config/module-lite.sh
  4. 顶层封装使用与平台原生方法基本相同。

02. 准备

  1. 在编译之前需要安装必要的工具软件

    # install homebrew
    $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    # install git
    $ brew install git
    # install yasm
    $ brew install yasm
    
  2. 需要配置相关的环境变量

    # add these lines to your ~/.bash_profile or ~/.profile
    # export ANDROID_SDK=
    # export ANDROID_NDK=
    # 或者直接执行
    $ export ANDROID_NDK=/Users/JustDo23/app/android/android-ndk-r10e
    $ export ANDROID_SDK=/Users/JustDo23/app/android/android-sdk-macosx
    

03. 编译

  1. 逐行执行命令

    # 克隆项目到指定文件夹
    $ git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
    # 进入文件夹
    $ cd ijkplayer-android
    # 创建并切换分支
    $ git checkout -B latest k0.8.8
    
    # 执行初始化脚本
    $ ./init-android.sh
    
    # 进入目录
    $ cd android/contrib
    $ ./compile-ffmpeg.sh clean
    $ ./compile-ffmpeg.sh all
    
    $ cd ..
    $ ./compile-ijk.sh all
    
  2. 编译完成。编译是一个漫长的过程。

04. 导入

  1. 编译成功之后会生成完整的 Android 项目
  2. 目录:ijkplayer-android/android/ijkplayer/
  3. 使用 Android Studio 在指定目录打开项目
  4. 在各个依赖下可以找到相应平台的 .so 文件

05. 配置

config 目录下有三个不同等级的配置和一个配置指向文件。

  1. If you prefer more codec/format

    $ cd config
    $ rm module.sh
    $ ln -s module-default.sh module.sh
    
  2. If you prefer less codec/format for smaller binary size (include hevc function)

    $ cd config
    $ rm module.sh
    $ ln -s module-lite-hevc.sh module.sh
    
  3. If you prefer less codec/format for smaller binary size (by default)

    $ cd config
    $ rm module.sh
    $ ln -s module-lite.sh module.sh
    

因此可以根据需求选择不同的配置。

06. 支持 amr 格式

默认配置并不支持播放 amr 格式音频文件。在 module-lite.sh 文件中添加如下配置

# ./configure --list-decoders
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=amrnb"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=amrwb"

# ./configure --list-muxers
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-muxer=amr"

# ./configure --list-demuxers
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=amr"

07. 支持 Https

默认配置并不支持 https 网络地址。需要在编译时 openSSL

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

$ cd android/contrib
$ ./compile-openssl.sh clean
$ ./compile-ffmpeg.sh clean
$ ./compile-openssl.sh all
$ ./compile-ffmpeg.sh all

$ cd ..
$ ./compile-ijk.sh all

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