利用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. 真机和模拟器分为DebugRelease版本

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()

实现效果如下:
这里写图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐