1)ijkplayer 是一个基于 ffplay 的开源视频播放器核心,支持 iOS/Android 平台
项目地址:https://github.com/Bilibili/ijkplayer
2)确保你的机器上已经安装了Git和yasm,如果没有请在终端执行以下命令:
sudo apt-get update
sudo apt-get install git
sudo apt-get install yasm
//由于笔者已经按照,可以执行version指令,查看当前的安装版本
git --version
yasm --viersion
3)确认了git和yasm的安装后,开始编译的具体步骤
//在本地桌面上创建一个IJKPlayer文件夹,并移动到该文件夹下
cd ./Desktop/IJKPlayer/
//直接拉取源代码到本地
git clonehttps://github.com/Bilibili/ijkplayer.gitijkplayer-iOS
//拉去分支后,会看到本地路径下出现一个ijkplayer-ios的文件夹,将当前路径移动到该目录下
cd ijkplayer-ios
//检查更新代码 这一步是切换到0.8.4版本,这是一个本地分支的切换,具体的你可以看自己而定
git checkout -B latest k0.8.4
//支持所有解码器
cd config
rm module.sh
ln -s module-default.sh module.sh
//预编译先,先vim一下module脚本
vim module.sh
//添加预编译脚本内容为一下内容,然后点击 esc 退出 vim编译模式,执行 :wq 保存
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"
//初始化,会把ffmpeg的代码拉取到本地
cd ..
./init-ios.sh
./init-ios-openssl.sh
//移动当前目录到ios文件夹下
cd ios
//先clean一下FFmpeg相关的数据,避免在执行all时出现新旧数据冲突
./compile-openssl.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
4)打framework文件
http://blog.csdn.net/block_xh/article/details/64122118
//由于ijkplayer本身默认不支持https,因此在预编译FFmpeg和openssl时,工程的 ijkplayer-ios/ios/build/universal/lib 路径下会生成如下的.a静态包:
但是IJKMediaPlayer这个framework工程中,默认是不导入libcrypto.a和libssl.a文件的,而这两个文件恰恰是ijkplayer编译支持https的关键
打开 IJKMediaPlayer工程
进入 Build Phases -> Link Binary With Libraries
点击 “+”号 -> Add Other
添加 ijkPlayer-ios/ios/build/universal/lib 路径下的 libcrypto.a 和 libssl.a文件到 IJKMediaPlayer这个framework工程中
把模式从 debug调整为 release模式
编译IJKMediaPlayer工程(真机和模拟器均要编译)
cd 到 IJKMediaPlayer工程中的 products文件夹下,
//合并真机和模拟器:
lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
//此时products目录下会多出一个合并文件,注意:上一个操作中的合并指令中,合并的对象是IJKMediaFramework.framework文件中的IJKMediaFramework文件
//将上一步中的合并文件替换掉iphoneos/IJKMediaFramework.framework中
cp IJKMediaFramework Release-iphoneos/IJKMediaFramework.framework/
播放器初始化设置
[options setPlayerOptionIntValue:1 forKey:@"fast"];
[options setPlayerOptionIntValue:1 forKey:@"mediacodec-all-videos"];
[options setPlayerOptionIntValue:0 forKey:@"opensles"];
[options setPlayerOptionIntValue:1 forKey:@"framedrop"];
[options setFormatOptionIntValue:1 forKey:@"seekable"];
[options setFormatOptionIntValue:0 forKey:@"seek2any"];
[options setFormatOptionValue:"" forKey:@"user_agent"];
网友评论