利用Bilibili的开源库ijkplayer实现视频直播
·
利用Bilibili的开源库ijkplayer实现视频直播
最近研究视频直播的技术,起初了解了直播APP需要的技术体系,包括音视频的编码、解码、推流等,但对于在真实项目中最好是使用优秀的第三方框架来实现相关的功能,下面介绍下ijkplayer实现视频的播放解码等。
第一步在GitHub上面下载ijkplayer的源码
这里是官方给出的在iOS上面构建的方式
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.8.1
./init-ios.sh
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
构建完成后,如图所示,有需要的可以到这里下载
第二步在项目中集成该框架
这里我是把IJKMdeiaPlayer制作成framework在项目中使用的,这样的缺点就是看不到源码,开发阶段建议直接使用框架。
1.打开项目工程选择模拟器直接编译制作framework
说明:
1.设备选择模拟器或者真机是制作不同平台的framwork
2. 真机和模拟器分为Debug和Release版本
Debug和Release版本的切换操作
2.查看制作的framework
3.有时候测试阶段需要在模拟器和真机上测试,这时候就需要两个版本的framework,合并framework是个不错的选择
进入framework文件夹
// 合并framework
lipo -create Debug-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Debug-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
// 查看framework信息
lipo -info IJKMediaFramework
将刚生成的IJKMediaFramework 拖入任意一个文件夹替换原来的IJKMediaFramework即可,新的IJKMediaFramework就合并好了
4.将IJKMediaFramework导入框架使用
编译使用报错,需要添加libz.tbd,libc++.tbd两个依赖包
5.利用框架加载直播画面
let options = IJKFFOptions.byDefault()
// 硬解码
options?.setOptionIntValue(1, forKey: "videotoolbox", of: kIJKFFOptionCategoryPlayer)
ijkPlayer = IJKFFMoviePlayerController(contentURLString: liveURLString, with: options)
let width = UIScreen.main.bounds.width
ijkPlayer?.view.bounds = CGRect(x: 0, y: 0, width: width, height: width * 3 / 4)
ijkPlayer?.view.center = view.center
view.addSubview(ijkPlayer!.view)
ijkPlayer?.prepareToPlay()
实现效果如下:
更多推荐
已为社区贡献2条内容
所有评论(0)