Bilibili
引言:主要是因为刚开始接触的时候整个人都是懵逼呵呵的。
时间:2018年03月27日
作者:JustDo23
基于:Mac OS
01. 简介
Android/iOS video player based on FFmpeg , with MediaCodec, VideoToolbox support.
Video player based on ffplay
remove rarely used ffmpeg components to reduce binary size config/module-lite.sh
顶层封装使用与平台原生方法基本相同。
02. 准备
在编译之前需要安装必要的工具软件
# install homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# install git
$ brew install git
# install yasm
$ brew install yasm
需要配置相关的环境变量
# 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. 编译
逐行执行命令
# 克隆项目到指定文件夹
$ 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
编译完成。编译是一个漫长的过程。
04. 导入
编译成功之后会生成完整的 Android 项目
目录:ijkplayer-android/android/ijkplayer/
使用 Android Studio 在指定目录打开项目
在各个依赖下可以找到相应平台的 .so 文件
05. 配置
在 config 目录下有三个不同等级的配置和一个配置指向文件。
If you prefer more codec/format
$ cd config
$ rm module.sh
$ ln -s module-default.sh module.sh
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
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