【项目一 · 直播】 ☞ 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;

 

  

 

posted @ 2017-04-02 13:10  专注·精彩  阅读(946)  评论(0编辑  收藏  举报