使用框架LFLiveKit
cocoapods使用方法
platform :ios, "8.0"
target 'myapp' do
pod 'LFLiveKit', '~> 1.6'
end
需要声明的变量
@property (nonatomic, strong) LFLiveSession *session; ——>推流中必须要用到的
@property (nonatomic, copy) NSString *rtmpUrl; `——>服务器的url
@property (nonatomic, weak) UIView *livingPreView; ——>用于摄像头捕捉的画面显示
session属性如下
@property (nullable,nonatomic, weak) delegate;//代理方法 稍后介绍
@property (nonatomic, assign) BOOL running;//控制直播是开还是关的状态
@property (nonatomic, strong,null_resettable) UIView *preView;//视频图层
@property (nonatomic, assign) AVCaptureDevicePosition captureDevicePosition;//摄像头方向
@property (nonatomic, assign) BOOL beautyFace;//美颜开关
@property (nonatomic,assign) BOOL muted;//静音开关
@property (nullable,nonatomic, strong,readonly) LFLiveStreamInfo * streamInfo;//控制直播流的信息
@property (nonatomic,assign,readonly) LFLiveState state;//直播流上传的状态
@property (nonatomic,assign) BOOL showDebugInfo;//显示Debug信息
@property (nonatomic,assign) NSUInteger reconnectInterval;//重连间隔
@property (nonatomic,assign) NSUInteger reconnectCount;//重连次数
初始化方法
- (nullable instancetype)initWithAudioConfiguration:(nullable LFLiveAudioConfiguration*)audioConfiguration videoConfiguration:(nullable LFLiveVideoConfiguration*)videoConfiguration liveType:(LFLiveType)liveType //初始化session的方法 三个参数分别是 视频 音频 和 流类型设置
- (void)startLive:(nonnull LFLiveStreamInfo*)streamInfo;//开始直播
- (void)stopLive;//停止直播
设置session一般情况下
session. preView
session. delegate
session. beautyFace
session. streamInfo
session. running
session. captureDevicePosition
设置session. streamInfo的时候会用到url———> rtmpUrl
#pragma mark -- LFStreamingSessionDelegate
/** live status changed will callback */
- (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange:(LFLiveState)state{
NSString *tempStatus;
switch (state) {
case LFLiveReady:
tempStatus = @"准备中";
break;
case LFLivePending:
tempStatus = @"连接中";
break;
case LFLiveStart:
tempStatus = @"已连接";
break;
case LFLiveStop:
tempStatus = @"已断开";
break;
case LFLiveError:
tempStatus = @"连接出错";
break;
default:
break;
}
self.statusLabel.text = [NSString stringWithFormat:@"状态: %@\nRTMP: %@", tempStatus, self.rtmpUrl];
}