IJKPlayer只能支持http或者https其中之一,默认支持http,如果使用https那么需要做额外的配置
获取源码
//获取ijkplayer源码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
//进入源码目录
cd ijkplayer-ios
//切换分支
git checkout -B latest k0.8.0
配置多种格式支持
(如果不需要多种格式可以跳过这一步)
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
cd ..
cd ios
sh compile-ffmpeg.sh clean
获取ffmpeg
cd ..
./init-ios.sh
https支持
(https支持的静态文件libcrypto.a 和 libssl.a,如果不需要可以跳过这一步)
./init-ios-openssl.sh
cd ios
vim ../config/module.sh
//在打开的文件中添加一行下面一行
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"
./compile-ffmpeg.sh clean
编译
./compile-openssl.sh all(如果不需要可以跳过这一步)
./compile-ffmpeg.sh all
配置framework
(如果不使用https跳过这一步)
用xcode打开ios目录下的IJKMediaPlayer工程
如果不使用https,那么直接做常规framework打包即可
如果使用https,那么需要手动添加libcrypto.a 和 libssl.a文件,默认不会添加
然后再做framework打包即可
注意:这两个依赖库的路径:ijkplayer-ios/ios/build/universal/lib,只有做了上面openssl相关的操作,才可以在这个目录下找到libcrypto.a 和 libssl.a
打包framwork
1、配置Release模式如果下图
2、打包真机framework
如图操作,然后编译即可
3、打包模拟器framework
如图操作,然后编译即可
4、合并framework
//lipo -create 真机framework路径 模拟器framework路径 -output 合并路径(这里的路径都需要包含文件名称)
lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
集成framework到项目中
1、导入framework
直接将framework拖入到工程中即可
2、添加下列依赖到工程
//1、libstdc++.tbd
//2、libz.tbd
//3、libbz2.tbd
//4、AudioToolbox
//5、UIKit
//6、CoreGraphics
//7、AVFoundation
//8、CoreMedia
//9、CoreVideo
//10、MediaPlayer
//11、MobileCoreServices
//12、OpenGLES
//13、QuartzCore
//14、VideoToolbox
按github中的demo使用即可
https://github.com/Bilibili/ijkplayer
问题
遗留问题,有高手可以帮忙解决下
1、明明在播放isPlaying()返回false
https://github.com/Bilibili/ijkplayer/issues/1411
可以尝试在播放器准备播放的回调中先暂停再播放
@objc private func mediaIsPreparedToPlayDidChange(notification:Notification)
{
JLBLog("准备播放:\(notification)")
player?.pause()
player?.play()
}
2、内存泄漏,至今无解
每次重新播放都会增加1~2M内存
https://github.com/Bilibili/ijkplayer/issues/2144
懒人脚本