【项目一 · 直播】 ☞ 3. 推流直播
一、推流
1. 概念
推流,就是将采集到的音频,视频数据通过流媒体协议发送到流媒体服务器。
2. 推流过程
- 推流前的工作:采集,处理,编码压缩
- 推流中做的工作: 封装,上传
3. 推流框架介绍
- LFLiveKit (推荐):由Adobe公司开发。框架已经实现了 后台录制、美颜功能,支持H264(视频编码)、AAC(音频编码)编码,支持RTMP传输协议,动态改变速率,弱网丢帧(网络慢的情况下,为了保证视频通畅,通常采用丢帧处理)等。
- LFLiveKit库里已经集成GPUImage框架用于美颜功能,GPUImage基于OpenGl开发,纯OC语言框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达125种常见的滤镜效果。
- LiveVideoCoreSDK : 实现了美颜直播和滤镜功能,我们只要填写RTMP服务地址,直接就可以进行推流啦。
- PLCameraStreamingKit: 也是一个不错的 RTMP 直播推流 SDK。
PS: 另外其实好多第三方的集成也很好用,可参考
二、LFLiveKit框架的使用
1 // 直播会话 2 - (LFLiveSession*)session { 3 if (!_session) { 4 _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; 5 _session.preView = self; 6 _session.delegate = self; 7 } 8 return _session; 9 } 10 // 开始直播 11 - (void)startLive { 12 LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new]; 13 streamInfo.url = @"your server rtmp url"; 14 [self.session startLive:streamInfo]; 15 } 16 // 结束直播 17 - (void)stopLive { 18 [self.session stopLive]; 19 } 20 21 //MARK: - CallBack: 22 - (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state; 23 - (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo; 24 - (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode;