引言:主要是因为刚开始接触的时候整个人都是懵逼呵呵的。
时间:2018年03月27日
作者:JustDo23
官方:https://github.com/Bilibili/ijkplayer
基于:Mac OS
01. 简介
-
Android/iOS
video player based onFFmpeg
, withMediaCodec
,VideoToolbox
support. -
Video player
based on ffplay -
remove rarely used
ffmpeg components toreduce 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=<your sdk path> # export ANDROID_NDK=<your ndk path> # 或者直接执行 $ 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 forsmaller binary size
(include hevc function)$ cd config $ rm module.sh $ ln -s module-lite-hevc.sh module.sh
-
If you prefer
less
codec/format forsmaller 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