四.简单的集成推流拉流(实用篇)
- 1.** 推流端**,这里我才用的 开源的推流框架,开源的iOS推流框架LFLiveKit. 是用OC写的, 很适合学习集成也非常简单, 几句代码就OK了.
采用cocopods导入即可
pod 'LFLiveKit'
提示:LFLiveKit
已经集成了GPUImage
, 如果项目中有集成GPUImage
, 需要将之前的移除掉. 且集成LFLiveKit
需要关闭Bitcode.
导入成功
在推流的控制器写入下面的代码
导入推流框架 #import "LFLiveKit.h" - (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;
到此推流就成功了,提示网络一定要打来
2.** 拉流端 **主要是基于ijkplayer 的. 最好是打包成framework. 打包教程
下载 ijkplayer打包好的静态库 密码: mcjt
导入库:
完成上述之后,运行不报错,就说明你基本上成功了,在拉流的控制器里面输入下面的代码
导入 #import <IJKMediaFramework/IJKMediaFramework.h> 1.创建推流对象 - (LFLiveSession*)session { if (!_session) { _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]]; _session.delegate = self; } return _session; }
2.在点击开始直播的方法里面输入
NSLog(@"开始直播"); // 判断是否是模拟器 if ([[UIDevice deviceVersion] isEqualToString:@"iPhone Simulator"]) { [MBProgressHUD showError:@"请用真机进行测试, 此模块不支持模拟器测试"]; return; } // 判断是否有摄像头 if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){ [MBProgressHUD showError:@"您的设备没有摄像头或者相关的驱动, 不能进行直播"]; return; } // 判断是否有摄像头权限 AVAuthorizationStatus authorizationStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if (authorizationStatus == AVAuthorizationStatusRestricted|| authorizationStatus == AVAuthorizationStatusDenied) { [MBProgressHUD showError:@"app需要访问您的摄像头。\n请启用摄像头-设置/隐私/摄像头"]; return; } // 开启麦克风权限 AVAudioSession *audioSession = [AVAudioSession sharedInstance]; if ([audioSession respondsToSelector:@selector(requestRecordPermission:)]) { [audioSession performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) { if (granted) { return YES; } else { //[self showInfo:@"app需要访问您的麦克风。\n请启用麦克风-设置/隐私/麦克风"]; return NO; } }]; } LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new]; streamInfo.url = kTRMPServe; [self.session startLive:streamInfo];
相关的类demo里面都有简单的直播demo 密码: w935
到此,推流和拉流就完成了,更多美颜等功能等等,就看更多的大神博客,下面推荐
五.好的直播博客推荐
七牛云技术(三方直播)
ijkplayer视频直播框架(最好打包成静态库):可以进去学习一下