ijkplayer编译

记录一下ijkplayer 编译过程

ijkplayer官网提供的使用功能有限,https也不支持,一般项目中使用都需要自己编译,网上也有好多编译好的,用的不太放心,这里自己编译一下,下面为我的编译过程

环境:

  • Mac 10.13.1

ijkplayer github地址

一、环境安装

看ijkplayer github的Before Build

1、install homebrew, git, yasm

1、安装:ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
2、测试(会输出Homebrew版本号):brew -v

  • 安装git,我的电脑原来就有git,有则跳过

1、安装:brew install git
2、测试(会输出Git版本号):git --version

  • 安装yasm:brew install yasm

1、安装:brew install yasm
2、测试?

2、add these lines to your ~/.bash_profile or ~/.profile(Android SDK和NDK环境配置)
  • Android SDK:Android开发的应该都有,没有的话网上搜一下
  • Android NDK:我之前在Android Studio上下载的NDK是android-ndk-r16b,编译一直不成功,后来下载的android-ndk-r10e,下载并解压到指定目录,记住这个目录后面配置环境变量,下载地址官网地址
  • 环境变量配置:
1、 打开命令切换到根目录:

cd ~

2、查看.bash_profile文件是否存在,存在则跳过3步骤

ls -a

3、创建.bash_profile文件

touch .bash_profile

4、打开.bash_profile文件

open .bash_profile

5、通过步骤4会打开.bash_profile文件,我的sdk和ndk都放在了/Users/xxx/Library/Android目录下,xxx为用户名。下面分别为Android SDK 和Android NDK环境配置:
export PATH=${PATH}:/Users/xxx/Library/Android/sdk/platform-tools
export PATH=${PATH}:/Users/xxx/Library/Android/sdk/tools
export PATH=${PATH}:/Users/xxx/Library/Android/android-ndk-r10e
ANDROID_NDK=/Users/xxx/Library/Android/android-ndk-r10e
export ANDROID_NDK
6、保存并关闭.base_profile文件,并输入下面命令使配置生效

source .bash_profile

7、ndk配置成功后测试,输出如下则成功了

ndk-build

ndk测试

二、编译

看ijkplayer github的Build Android

1、具体编译步骤如下:
// 1、克隆项目
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
# 切换到release版本的tag下,以GitHub上最新版本为准
git checkout -B latest k0.8.8

// 2、初始化,安装ffmpeg和openssl,比较慢
# 安装ffmpeg
./init-android.sh
# 安装openssl
./init-android-openssl.sh

// 3、选择配置文件

/*
* 在config下有4个文件:module-default.sh、module-lite-hevc.sh、module-lite.sh、module.sh
* 我们在编译的时候会使用module.sh文件,其他三个文件为官方给我提供的三个模版,可以考虑使用其中的一个放到module.sh中,或自己写一个
* module-default.sh:如果你喜欢更多类型可以用这个
* module-lite-hevc.sh:如果你更喜欢较小的二进制文件的编解码器/格式(包括hevc函数)
* module-lite.sh:如果您更喜欢较小的二进制大小的编解码器/格式(默认情况下)
*/

cd config
# 移除默认文件
rm module.sh
# 这里使用module-lite.sh作为配置文件,拷贝module-lite.sh为module.sh
ln -s module-lite.sh module.sh

// 4、清除一波
# 进入android/contrib目录
cd ..
cd android/contrib
# 清楚ffmpeg的编译文件
./compile-ffmpeg.sh clean
# 清除openssl编译文件
./compile-openssl.sh clean

// 5、编译,下面比较慢。
/*
* 下面都是编译全部版本(all),如果编译某些版本可以使用xxx.sh armv5|armv7a
* 建议编出所有版本,然后可以选择某个so库,当然编译的慢一些
*/
# 编译openssl的所有架构
./compile-openssl.sh all
# 编译ffmpeg的所有架构
./compile-ffmpeg.sh all
# 编译ijk的所有架构
cd ..
./compile-ijk.sh all

注:我之前使用module-default.sh作为module.sh文件后,使用./compile-ffmpeg.sh all 编译后会报错
WARNING: arm-linux-androideabi-pkg-config not found, library detection may fail.
------------------------------
fatal error: linux/perf_event.h: No such file or directory
解决:找不到linux/perf_event.h,查了一下linux/perf_event.h是linux平台的效能优化工具,使用module-lite.sh编译则不会报错,经查看module-lite.sh文件中有如下配置,如使用module-default.sh文件则复制到中module.sh后添加下面代码忽略即可
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf" 
2、编译成功后,目录如下:

ijkplayer编译完成目录
在这里插入图片描述

三、编译后的完整项目地址,可以直接在Android Studio中运行,下篇文章我会精简一下编译出来的Demo,并介绍一下基本用法

编译成功后的项目地址
参考链接:https://www.imooc.com/article/33930

----------------------------------------------------------------

注:app播放一个视频出现一个问题就是有声音没有画面,使用系统的MediaPlayer就可以正常播放视频,在chrome浏览器上打开地址也只能播放声音。原因是视频格式是mp4v的格式,按上面编译出来是的IjkMediaPlayer是不支持这种格式的,播放时会打印出下面的log
I/IJKMEDIA: : Video: mpeg4, 1 reference frame (mp4v / 0x7634706D), none, 1920x1080 (0x0), 0/1, 3638 kb/s
解决方案就是在编译前在确定好module.sh后,在module.sh中添加下面配置支持mpeg4
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-decoder=mpeg4"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值