一、准备工作
1、Homebrew,简称“brew”,OSX上必备软件包管理工具(可百度参考安装方式,git和yasm安装方法相同,~_~),查看当前版本,在“终端”中输入令“brew -v”;
2、Git,代码管理工具,查看版本命令为:“git --version”;
3、Yasm,输出二进制的汇编器,查看版本命令为:“yasm --version”
以下是当前编译者版本信息:
二、下载IJKPlayer
本地新建文件夹(路径、名称随你高兴),将git上的项目clone到本地:
*进入该目录中:cd **路径
*克隆项目:git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
*进入ijkplayer-ios:cd ijkplayer-ios
*切换分支:git checkout -B latest k0.8.8,注:这个版本号可以查看git上的文件
如果能看到:Switched to a new branch 'latest',恭喜你,可以进入一下步!
三、配置修改
1、关于armv7 armv7s arm64的配置,这里我保留了arm64、i386、x86_64三种类型。
*在ijkplayer-ios->init-ios.h中查找“FF_ALL_ARCHS_IOS8_SDK”,保留:arm64、i386、x86_64;
*在ijkplayer-ios->ios->compile-ffmpeg.sh,同上。
2、支持格式配置,在ijkplayer-ios->config目录下默认有3种类型:
module-default.sh 更多的编解码器/格式
module-lite-hevc.sh 较少的编解码器/格式(包括hevc)
module-lite.sh 较少的编解码器/格式(默认情况)
我这里也是走寻常路,修改文件“module-lite.sh”,该文件默认是不是支持rtsp,如果要支持该类型,则要进行添加配置(百度);
四、下载ffmpeg文件
*进入ijkplayer-ios目录:./init-ios.sh
等待时间若干...
五、开始编译ffmpeg库
注:网上有些文章中要修改:“packet_queue_get_or_buffering”方法(路径是:ijkmedia/ijkplayer/ff_ffplay.c),其实我两种方式都试过了,改或是不改都不影响播放结果!
*进入 config 目录:cd config
*删除当前的 module.sh 文件:rm module.sh
*可根据需要替换文件,我这里选择了“module-lite.sh”,注:这里除了默认3个文件外,也可以自定义其他格式类型
ln -s module-lite.sh module.sh
*进入ios目录:./compile-ffmpeg.sh clean,输出如下信息(保留的3种配置信息):
*继续进行编辑:./compile-ffmpeg.sh all,这里可能会遇到一个错误:
xcrun -sdk iphoneos clang is unable to create an executable file.
C compiler test failed.
…
中间略
…solve the problem.
解决方法:sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/,输入电脑登录密码即可。
之后一阵“闪花屏”结束后表示ffmpeg库编译成功!
注:如果为https视频流,则必须添加https支持,最后生成静态文件 libcrypto.a 和 libssl.a。
*进入ijkplayer-ios目录:./init-ios-openssl.sh
cd ios
并且在“module.sh ”文件中添加如下配置,启用openssl组件
echo 'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"'
然后依次执行如下命令:
./compile-ffmpeg.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all
六、打包 framework
*打开xcode工程
/ijkplayer-ios/ios/IJKMediaPlayer,修改Deployment Target为9.0,再修改Build Configuration为Release,然后执行command+B编译即可!
因为之前的配置文件( compile-ffmpeg.sh )中删除了 armv7,工程编译报错,根据报错打开文件avconfig.h和config.h,直接注释掉!
*分别生成模拟器和真机状态下的framework,然后进行合并(我这里是为了方便,把两个目录复制出来)
先 cd 到 Products 目录下,然后执行:
lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
之后会多出个文件“IJKMediaFramework”,如图:
之后替换掉文件“IJKMediaFramework”,而“IJKMediaFramework.framework”就是我们需要的通用的framework文件了。
六、结束语
以上方法是简要生成ijk的方法,初试者可能会遇到各种问题,请给自己多点耐心!
本文如有错误,请指正,谢谢!
七、视频流地址
1、http://flv2.bn.netease.com/videolib3/1604/28/fVobI0704/SD/fVobI0704-mobile.mp4
2、rtmp://202.69.69.180:443/webcast/bshdlive-pc
3、http://dlhls.cdn.zhanqi.tv/zqlive/49427_jmACJ.m3u8
4、rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
5、rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp