iOS直播实用篇(手把手教)(下)

简介: iOS直播实用篇(手把手教)(下)

四.简单的集成推流拉流(实用篇)



  • 1.** 推流端**,这里我才用的 开源的推流框架,开源的iOS推流框架LFLiveKit. 是用OC写的, 很适合学习集成也非常简单, 几句代码就OK了.


采用cocopods导入即可


pod 'LFLiveKit'


提示:LFLiveKit已经集成了GPUImage, 如果项目中有集成GPUImage, 需要将之前的移除掉. 且集成LFLiveKit需要关闭Bitcode.


image.png


导入成功


image.png


在推流的控制器写入下面的代码

导入推流框架 #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;


到此推流就成功了,提示网络一定要打来


image.png


2.** 拉流端 **主要是基于ijkplayer 的. 最好是打包成framework. 打包教程


下载 ijkplayer打包好的静态库 密码: mcjt


导入库:


image.png


完成上述之后,运行不报错,就说明你基本上成功了,在拉流的控制器里面输入下面的代码

导入 #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


image.png


到此,推流和拉流就完成了,更多美颜等功能等等,就看更多的大神博客,下面推荐


五.好的直播博客推荐



大神博客1

大神博客2

七牛云技术(三方直播)

最详细的直播

ijkplayer视频直播框架(最好打包成静态库):可以进去学习一下

RTMP快速集成

推流框架


目录
相关文章
|
3月前
|
API Android开发 图形学
UNITY与安卓⭐三、安卓报错答疑合集
UNITY与安卓⭐三、安卓报错答疑合集
|
3月前
|
Java 图形学 Android开发
UNITY与安卓⭐二、AndroidStudio中关于通讯的使用教学
UNITY与安卓⭐二、AndroidStudio中关于通讯的使用教学
|
5月前
|
存储
技术经验分享:iOS_MJRefrash的详解以及使用
技术经验分享:iOS_MJRefrash的详解以及使用
|
iOS开发 开发者
iOS上架详细通关教程
iOS上架详细通关教程
|
开发框架 数据安全/隐私保护 Android开发
iOS二维码的生成和扫码详细介绍(手把手教)
iOS二维码的生成和扫码详细介绍(手把手教)
668 0
|
人机交互 iOS开发
iOS音视频入门AVAudioSession
`AVAudioSession`是苹果用来管理App对音频硬件(I / O)的资源使用;比如说: - 设置APP与其他APP是否混音,或者中断、降低其他App声音 - 手机静音下,APP是否可以播放声音 - 指定音频输入或者输出设备 - 是否支持APP录制,是否可以边录制边播放 - 声音中断的优先级(电话接入中断APP音频处理)
iOS音视频入门AVAudioSession
|
iOS开发 开发者
iOS好书籍推荐
iOS好书籍推荐
108 0
|
新零售 iOS开发
短视频商城在ios短视频开发上的应用效果
短视频商城在ios短视频开发上的应用效果
1553 0
|
数据安全/隐私保护 iOS开发 定位技术
我的iOS视频开放了,欢迎大家在线观看
<p>我的iOS视频开放了,欢迎大家在线观看,就是版本有些老,希望对有需要的同学有帮助(<span style="color:#ff00;">高清的</span>)<br></p> <p><strong><span style="color:#ff00;">iPhone与iPad开发实战--精通iOS开发(37讲)</span></strong><br></p> <p><a target="_
1607 0

相关实验场景

更多