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

BAT 批处理程序 2017-04-02

一、推流

1. 概念

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

2. 推流过程

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

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

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

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

3. 推流框架介绍

  • LFLiveKit (推荐):由Adobe公司开发。框架已经实现了 后台录制、美颜功能,支持H264(视频编码)、AAC(音频编码)编码,支持RTMP传输协议,动态改变速率,弱网丢帧(网络慢的情况下,为了保证视频通畅,通常采用丢帧处理)等。
  • LFLiveKit库里已经集成GPUImage框架用于美颜功能,GPUImage基于OpenGl开发,纯OC语言框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达125种常见的滤镜效果。
  • LiveVideoCoreSDK : 实现了美颜直播和滤镜功能,我们只要填写RTMP服务地址,直接就可以进行推流啦。
  • PLCameraStreamingKit: 也是一个不错的 RTMP 直播推流 SDK。

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

  • 七牛云
  • 腾讯的直播 LVB
  • 网易云信 SDK
  • 趣拍云

二、LFLiveKit框架的使用

- (LFLiveSession*)session {
	if (!_session) {
	    _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]];
	    _session.preView = self;
	    _session.delegate = self;
	}
	return _session;
}

- (void)startLive {	
	LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new];
	streamInfo.url = @"your server rtmp url";
	[self.session startLive:streamInfo];
}

- (void)stopLive {
	[self.session stopLive];
}

//MARK: - CallBack:
- (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state;
- (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo;
- (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode;

相关推荐