【项目一 · 直播】 ☞ 3. 推流直播

1、推流

1. 概念

  推流,就是将采集到的音频,视频数据经过流媒体协议发送到流媒体服务器。html

2. 推流过程

  • 推流前的工做:采集,处理,编码压缩

    

  • 推流中作的工做: 封装,上传

    

3. 推流框架介绍

  • LFLiveKit (推荐):由Adobe公司开发。框架已经实现了 后台录制、美颜功能,支持H264(视频编码)、AAC(音频编码)编码,支持RTMP传输协议,动态改变速率,弱网丢帧(网络慢的状况下,为了保证视频通畅,一般采用丢帧处理)等。
  • LFLiveKit库里已经集成GPUImage框架用于美颜功能,GPUImage基于OpenGl开发,纯OC语言框架,封装好了各类滤镜同时也能够编写自定义的滤镜,其自己内置了多达125种常见的滤镜效果。

 

  • LiveVideoCoreSDK : 实现了美颜直播和滤镜功能,咱们只要填写RTMP服务地址,直接就能够进行推流啦。
  • PLCameraStreamingKit: 也是一个不错的 RTMP 直播推流 SDK。

  

PS: 另外其实好多第三方的集成也很好用,可参考git

2、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;
相关文章
相关标签/搜索