iOS 屏幕直播 (ReplayKit + KSYLive_iOS)
iOS 10 中新增了挪用第三方的App扩大来直播屏幕内容的功用, 下面就简朴引见一下怎样运用KSYLive_iOS制造一款屏幕直播App.
参考资料
关于ReplayKit直播的直观引见人人能够看WWDC2016上的视频和PPT
简朴归纳综合屏幕直播运用场景:
1.在一款游戏中增加一个直播的进口.
2.玩家经由历程这个进口, 能够看到当前装备上已装置的屏幕直播APP的列表.
3.选中特定的直播APP后, 会涌现设置界面.
4.确认设置内容后, 回到游戏界面, 屏幕直播APP在背景将屏幕内容和声响直播出去.
从以上运用场景能够看出, 任何一款增加了直播进口的游戏都能够支撑恣意第三方直播App的直播, 没有绑定的束缚关联. 运用什么直播APP完整由玩家或许主播来挑选.
别的在直播的历程当中, 游戏的主窗口内的全部内容都邑被直播出去. 因而假如游戏将摄像头的预览窗口叠加到游戏画面上, 也会被观众看到.
在直播历程游戏自身播放的声响, 和麦克收集的声响能够分别被收集.
基础观点
作为直播App的开辟者, 基础不须要体贴游戏部份的开辟, 而只须要体贴直播部份的开辟. 没有了之前内置录屏的耦合关联.WWDC的演示中运用的游戏Fox能够作为我们的被测对象, 代码已放在 github上了.
前面说到ReplayKit的录屏是经由历程App扩大来完成的. App扩大跟一般的App差别, 它不能零丁宣布, 须要内置在一个一般App中, 称为容器App. 然则扩大的实行与容器App完整自力. 扩大由宿主App提议要求来启动, 与宿主App举行交互.
总结来讲以上提到了以下三个观点:
1.宿主App : 比方被录屏的游戏
2.容器App : 自身与录屏直播没有直接关联, 仅仅供应录屏App扩大的宣布去掉
3.录屏App扩大 : 完成录屏和直播的主要功用
录屏App扩大
直播App中须要嵌入两个扩大
Broadcast UI Extension 供应相似用户登录等设置选项的界面
Broadcast Upload Extension 吸收图象和音频数据, 举行直播
集成KSYLive_iOS的事情主要在Upload扩大的代码中举行
KSYLive_iOS
KSYLive_iOS 是一个供应了直播相干的功用的SDK
准备事情
1.建立容器App 比方Demo中的 KSYReplayKitDemo
2.在容器App中增加 Broadcast Upload Extension的target, Xcode 会自动同步增加对应的UI扩大
3.修正Upload扩大中的设置, Xcode 的默许模板是用于处置惩罚紧缩好的mp4文件, 在本demo中我们用另一种处置惩罚原 始图象和声响数据的体式格局, 本身来做紧缩.
须要修正Upload扩大的Info.plist文件 中的 NSExtension下的子项目:
修正RPBroadcastProcessMode为RPBroadcastProcessModeSampleBuffer
NSExtensionPrincipalClass 改成 SampleHandler
编辑 Podfile, 增加KSYLive_iOS的依靠, 实行pod install后 改成翻开 workspace.
至此, 准备事情就做好了, 能够最先写代码了. Upload扩大的进口类SampleHandler供应了一组回调函数, 用于处置惩罚直播最先完毕,停息恢复, 和吸收数据.
broadcastStartedWithSetupInfo: / broadcastFinished
broadcastPaused / broadcastResumed
processSampleBuffer: withType:
因而全部集成历程就是在以上回调函数中, 挪用直播SDK中对应的函数.
须要注重的是 SampleHandler 仅仅是供应事宜的回调, 自身在每一个事宜回调发作时都邑从新组织一个SampleHandler的实例, 所以不能直接将推流的状况保留在个中. 而须要别的供应一个单例的推流类, 在demo中为KSYRKStreamerKit.
集成事情
1.在KSYRKUploadExtUI中开辟设置界面, 将直播须要的一些设置信息从界面设置到setupInfo的字典中, 传到KSYRKUploadExt.
2.在KSYRKUploadExt里增加单例推流类 KSYRKStreamerKit KSYRKStreamerKit 中主如果保留 KSYStreamerBase 和 KSYAudioMixer的实例, 并以单例的体式格局在扩大的运转历程当中供应对 KSYStreamerBase 的接见.
3.KSYRKStreamerKit的组织函数中增加推流参数的设置, 比方音视频的编码器设置, 码率设置等.
4.KSYRKStreamerKit 中增加对推流事宜的监听回调, 当收到推流底层的毛病音讯时, 举行重连.
5.在 SampleHandler 类的各个回调接口中经由历程KSYRKStreamerKit 举行推流
6.broadcastStartedWithSetupInfo 接口启动推流, 从setupInfo 获得推流的设置信息,比方rtmp的url.
7.processSampleBuffer 接口将收到的图象和音频的sampleBuffer 送入 KSYRKStreamerKit.
8.现在 临时只支撑 mic 通路的音频
反应与发起
答疑:金山云视频云客户端SDK答疑专区
邮箱:zengfanping@kingsoft.com
QQ议论群:574179720
release:https://github.com/ksvc/KSYLi…