1、打开终端命令,安装需要程序
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
2、配置SDK和NDK
我是通过vi进入到~/.bash_profile 进行添加SDK和NDK路径配置的
注意vi的操作是添加上SDK和NDK的路径后,要按esc退出编辑模式,然后输入:wq保存退出
vi操作命令参考https://www.cnblogs.com/sriba/p/8043471.html
3、下载IJKPlayer源码,在命令终端里cd到ijk的根目录,切换到release版本的tag下
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.8.8
4、流程化脚本编译
编译前选择你的配置,就是自动化编译时的一些配置选项,比如支持什么协议啊,支持什么音视频类型等,
官方提供了三个模板给我们使用:
module-default.sh:默认,如果你喜欢更多类型可以用这个;
module-lite-hevc.sh:如果您更喜欢较小的二进制大小的编解码器/格式(包括hevc功能)
module-lite.sh:如果您更喜欢较小的二进制大小的编解码器/格式(默认情况下)
使用的时候如下:
cd config
rm module.sh
ln -s module-lite.sh module.sh
5、初始化FFMPEG
./init-android.sh
这个是下载FFMPEG的源码,下载过程会很慢。下载过程中extra\ffmpeg文件夹的内容会变化
6、编译ffmpeg
cd到android/contrib下,执行清除命令,然后编译需要的so,这里的all是生成所有版本的,如果只需要对应版本的,可以把all替换成armv7a等你需要的版本。编译需要很长时间
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
如图所示则成功
7、编译ijkplayer生成对应so
cd ..
./compile-ijk.sh all
如图所示则成功
遇到的问题:
1、进行到步骤5初始化FFMPEG的时候,执行./init-android.sh会报env: bash\r: No such file or directory错误。
解决办法:
在终端输入如下命令。安装dos2unix,并把当前目录的所有文件进行格式转换.
(dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。)
一、brew install dos2unix
二、find . -type f -exec dos2unix {} \;
2、进行到步骤6编译ffmpeg的时候,执行./compile-ffmpeg.sh all会报tools/do-compile-ffmpeg.sh:./configure: /bin/sh^M: bad interpreter: No such file or directory错误
此文件是在window下写的,所以在每行后面会加个ctrl+m就是M,所以后面的sh就变成shM当然是没有这个命令的,所以脚本就不能运行了,把^M去掉就应该没问题了。参考https://blog.csdn.net/yanghangjun/article/details/5862797。不过我当时没看到这篇文章,当时的解决办法如下:
在android/contrib目录下执行find . -type f -exec dos2unix {} \;
将此目录的sh文件也通过dos2unix转换下格式就可以编译了
3、如果遇到You need the NDKr10e or later,就下载r10e及以后的版本在步骤2那里改下NDK的路径