IOS视频直播接入说明

一、名词解释

分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率。常见视频分辨率的有1080P即1920x1080,720P即1080x720,640x480等。

帧率:每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。

码率: 数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。

二、集成步骤

(一)运行环境

SDK支持iOS7.0及以上版本的设备,兼容iPhone、iPad、iPod touch

(二)申请APPKey 和 APPSecretkey

1、打开http://www.rdsdk.com/ ,在锐动官网首页选择登录或注册,新用户先注册,老用户直接登录。

2、登录完成后,进入视频云管理 点击“+新增”,填写您应用的名称等,点击“提交”,应用创建完成。

3、创建应用完成后会自动跳转至个人中心页面,此时会获取到该应用的 AppKey 和AppSecret。

(三)下载并导入SDK

1、添加libRDLiveSDK.a

2、工程设置

(1)TARGETS->General->Deployment Info仅勾选竖屏(Portrait),横屏(LandscapeLeft、LandscapeRight)不勾选:

(2)IOS9适配:

在Info.plist中添加App Transport Security Settings类型Dictionary。在App Transport Security Settings下添加Allow Arbitrary Loads类型Boolean,值设为YES。

在TARGETS->Build Settings->Enable Bitcode,将值设置为No。

(3)IOS10适配:

在Info.plist中添加NSCameraUsageDescription、NSMicrophoneUsageDescription、NSPhotoLibraryUsageDescription。

(4)在TARGETS->Build Phases->Linked Frameworks and Libraries中加入SDK依赖库

(5)设置Other Linker Flags

在TARGETS->Build Settings->Other Linker Flags中加入-ObjC。

(四)直播

1、引入头文件及初始化

#import "RDLiveSDK.h"

/**

*  初始化RDLiveSDK,此方法在使用RDLiveSDK时在主线程中调用。

*

*  @param appKey 在锐动SDK官网(http://www.rdsdk.com/ )中注册的应用Key。

*  @param secretKey 在锐动SDK官网(http://www.rdsdk.com/ )中注册的应用密钥。

*  @param successBlock 初始化成功的回调[authType:在锐动SDK官网申请的服务类型]

*  @param errorBlock    初始化失败的回调[error:初始化失败的错误码]

*/

- (instancetype) initWithAPPKey:(NSString *)appKey

andSecretKey:(NSString *)secretKey

success:(void (^)(RDLiveAuthorizationType authType))successBlock

error:(void (^)(NSError *error))errorBlock;

使用SDK开始直播视频

2、属性说明

/**

*  预览视图

*/

@property (nonatomic, strong, readonly) UIView *cameraView;

/**

*  切换摄像头

*/

@property (nonatomic, assign) RDRtmpPublishCameraState cameraState;

/**

*  美颜,默认为开启美颜(RDRTMPPUBLISH_BEAUTIFY_SELECTED)

*/

@property (nonatomic, assign) RDRtmpPublishBeautifyState beautifyState;

/**

*  麦克风音量; Default is 1.0f

*/

@property (nonatomic, assign) float         micGain;

/**

*  是否开启闪光灯

*/

@property (nonatomic, assign) BOOL          torch;

/**

*  输出分辨率

*/

@property (nonatomic, assign) CGSize            videoSize;

/**

*  码率

*/

@property (nonatomic, assign) int               bitrate;

/**

*  帧率

*/

@property (nonatomic, assign) int               fps;

/**

*  是否根据设备方向调节摄像头方向

*/

@property (nonatomic, assign) BOOL          useInterfaceOrientation;

/**

*  是否根据用户网络自动调节码率; Default is off

*/

@property (nonatomic, assign) BOOL          useAdaptiveBitrate;

@property (nonatomic, readonly) RDLiveAuthorizationType authType;

3、获取所有在线直播用户Uid接口方法说明

/**

*  获取所有在线直播用户(uid)

*/

- (void)getAllLiveList:(void (^)(NSArray *allLiveInfoArray))successBlock

error:(void (^)(NSError *error))errorBlock;

4、直播接口方法说明

(1)设置直播参数接口

/**

*  直播之前准备,用于设置直播参数。

*  @param  frame                   显示分辨率

*  @param  videoSize               输出分辨率

*  @param  bitrate                 码率

*  @param  fps                      帧率(1-30)

*  @param  useInterfaceOrientation 是否根据设备方向调节摄像头方向

*  @param  cameraState                设置前后置摄像头,默认为前置

*/

- (void) preparePublishWithFrame: (CGRect) frame

videoSize: (CGSize) videoSize

bitrate: (int) bitrate

fps: (int) fps

useInterfaceOrientation: (BOOL) useInterfaceOrientation

cameraState: (RDRtmpPublishCameraState) cameraState;

- (void) preparePublishWithFrame: (CGRect) frame

videoSize: (CGSize) videoSize

bitrate: (int) bitrate

fps: (int) fps;

- (void) preparePublishWithFrame: (CGRect) frame

videoSize: (CGSize) videoSize

bitrate: (int) bitrate

fps: (int) fps

useInterfaceOrientation: (BOOL) useInterfaceOrientation;

(2)开启/关闭摄像头

/**

*  开启摄像头:直播前需要先开启摄像头

*/

- (void) startCamera;

/**

*  停止摄像头

*/

- (void) stopCamera;

(3)开始直播接口:根据自己申请的服务类型,选择不同的直播接口,开始直播。

/**

*  在锐动SDK官网申请的服务类型是基础服务RDLive_AT_URL或RDLive_AT_URL_OR_UID时,才可使用此接口直播

*  开始直播,推送摄像头到rtmp

*

*  @param rtmpUrl      rtmp服务器地址

*  @param streamKey    rtmp流名称

*  @param errorBlock   开始直播失败的回调[status:开始直播失败的错误码]

*/

- (void) startPublishWithUrl:(NSString *)rtmpUrl

andStreamKey:(NSString *)streamKey

success:(void (^)())successBlock

error:(void (^)(RDLiveErrorCode status))errorBlock;

/**

*  在锐动SDK官网申请的服务类型是云服务RDLive_AT_UID或RDLive_AT_URL_OR_UID时,才可使用此接口直播

*  开始直播

*

*  @param userID       用户ID

*  @param errorBlock   开始直播失败的回调[error:开始直播失败的错误码]

*/

- (void) startPublishWithUid:(NSString *)userID

andTitle:(NSString *)title

success:(void (^)())successBlock

error:(void (^)(NSError *error))errorBlock;

/**

*  在锐动SDK官网申请的服务类型是云服务RDLive_AT_UID或RDLive_AT_URL_OR_UID时,才可使用此接口直播

*  由于网络不好等情况,非用户主动停止直播时,可尝试重新开始直播

*

*  @param userID       用户ID

*  @param errorBlock   开始直播失败的回调[error:开始直播失败的错误码]

*/

- (void) reStartPublishWithUid:(NSString *)userID

success:(void (^)())successBlock

error:(void (^)(NSError *error))errorBlock;

(4)直播结束

/**

*  结束直播

*/

- (void) endPublish;

(5)进入后台时结束直播

/**

*  在锐动SDK官网申请的服务类型是云服务RDLive_AT_UID或RDLive_AT_URL_OR_UID时,才可使用此接口直播

*  进入后台时结束直播

*  按下Home键不需要调用该接口,可用于分享等情况

*/

- (void) endPublishEnterBackground;

(6)回到前台时重连直播接口

/**

*  在锐动SDK官网申请的服务类型是云服务RDLive_AT_UID或RDLive_AT_URL_OR_UID时,才可使用此接口直播

*  回到前台重连直播

*  按下Home键后返回不需要调用该接口,可用于分享等情况

*/

- (void) reStartPublishBecomeActive;

(7)美颜相关

/**

*  设置是否开启美颜,默认:RDRtmpPublishFilterTypeNormal

*/

- (void) setFilter:(RDRtmpPublishFilterType) type;

/**

*  设置美颜程度,默认美颜程度为2

*/

- (void) setBeautyLevel: (NSInteger ) level;

(8)设置facue

/**

*  设置Facue,默认不设置

*/

- (void) setFacue:(RDRtmpPublishFacueType) type;

(9)添加水印

**

*  添加水印

*

*  @param waterView 水印(可支持UIImageView和UILabel)

*  @param location  水印标准位置,左右上下,中心点

*  设置位置:(1)位置均由设置的rect的origin决定

*            (2)只设置竖屏时水印位置即可,横屏时的位置,SDK内会做处理

*/

- (void) addWaterMarkView:(id) waterView

location:(RDRtmpPublishWaterMarkLocation)location;

(10)获取facue缩略图

/**

*  获取Facue缩略图

*/

- (UIImage *) getFacueImage: (RDRtmpPublishFacueType) type;

(11)申请的是基础服务时,可从该接口获取直播缩略图。申请的是云服务时,SDK内会自动上传缩略图。

/**

*  获取直播截屏

*/

- (UIImage *) getPublishScreenshot;

5、直播委托协议

直播状态回调

/**

*  推送状态回调

*

*  @param rtmpState 推送状态

*/

- (void) RDRtmpPublishConnectionStatusChanged: (RDRtmpPublishState) liveState;

具体情况

锐动直播SDK ios版通过iOS移动端实时采集视频,同时在拍摄过程中支持多种实时滤镜效果,只要调用视频直播接口,通过3G、4G、WIFI等网络,推流发送给云端流媒体直播系统处理,并通过CDN视频加速分发做现场直播播出,供远程观看,是一款专业级水平的视频直播开发包。同时,在节目直播过程中,直播视频可归档、存储,方便后续回看。视频直播SDK不断优化视频采集和处理能力,让开发者更专注自身业务应用开发和运营。


SDK功能介绍:

1.直播推流

  • 实时美颜
  • 滤镜 内置主流滤镜,支持扩展更多滤镜
  • 协议 RTMP协议,支持主流服务器
  • 编码与设置 支持H264及AAC编码;支持智能硬件编码;支持自定义分辨率、码率、帧率
  • 内置伴音 主播可以高质量卡拉OK及喊麦主持
  • 可定制的水印
  • 人脸识别及装扮 支持人脸识别并内置了一些演示人脸装扮挂件,支持扩展更多
  • 界面可定制 当前已经实现了通用的开源界面,也可根据实际业务进行扩展
  • 云服务器 支持锐动云服务器推流(UID直播推流),也支持使用第三方云服务器(URL直播推流)。
  • 摄像头切换 前、后摄像头自由切换,中间无卡顿
  • 静音 支持实时静音与取消静音
  • 支持横竖屏

2.播放器

  • 低延迟
  • 协议 支持RTSP/RTMP协议,支持主流服务器
  • 支持自定义布局
  • 静音 支持实时静音与取消静音
  • 支持横竖屏

 截图

   

功能试用:

最新SDKDemo下载(以下链接是最新的,github代码会有稍有延迟): SDK下载请单击

关于授权:

www.rdsdk.com 致力于专业的人做专业的事,降低客户的开发时间和开发成本,你只需要支付很少的费用,花上几个小时就能增加直播及回放功能。

单击申请试用

洽谈咨询:

SDK交流群: 305128688

咨询电话: 4008989105

客服电话: 15313066905 (周一至周五 9:00-18:00)

客服邮箱:2637433751@qq.com

视频直播SDK-ios版的更多相关文章

  1. Android 视频直播 SDK

    Android 视频直播 SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1 ...

  2. 视频云SDK iOS持续集成项目实践

    1. 前言 2016年, 我们维护的 iOS推流播放融合SDK KSYLive_iOS 在github上发布了40多个版本, 平均两周发布一个新版本, 经历了最初痛苦的全手动版本构建和维护, 到后来慢 ...

  3. 开发腾讯移动游戏平台SDK ios版Ane扩展 总结

    本文记录了在开发 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题 文中非常多问题都是基础的问题.对object c和xcode配置了解不深入导致的.(没办法,开发ane的程 ...

  4. iOS中集成ijkplayer视频直播框架

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...

  5. Android&iOS视频直播之旅

    现在的移动互联网时代,大家的网速真是越来越快,高带宽的WIFI和覆盖率极大的4G,4G+把手机观看视频直播推上了风口浪尖,越来越多的应用在玩手机视频直播,我们做的应用里也要嵌入视频直播. 这篇文章里我 ...

  6. 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型

    ​关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...

  7. 直播时代--IOS直播客户端SDK,美颜直播【开源】

    当前视频直播非常火爆,手机端的视频直播也非常火爆,PGC.UGC的视频直播门槛都降低了很多. 本文介绍一个:IOS 客户端直播的SDK,代码完全开源. 直播时代:让IOS普通开发者一天内做出一个RTM ...

  8. 超强教程:如何搭建一个 iOS 系统的视频直播 App?

    现今,直播市场热火朝天,不少人喜欢在手机端安装各类直播 App,便于随时随地观看直播或者自己当主播.作为开发者来说,搭建一个稳定性强.延迟率低.可用性强的直播平台,需要考虑到部署视频源.搭建聊天室.优 ...

  9. iOS视频直播初窥:高仿<喵播APP>

    视频直播初窥 视频直播,可以分为 采集,前处理,编码,传输, 服务器处理,解码,渲染 采集: iOS系统因为软硬件种类不多, 硬件适配性比较好, 所以比较简单. 而Android端市面上机型众多, 要 ...

随机推荐

  1. AP聚类算法(转)

    Affinity Propagation (AP) 聚类是2007年在Science杂志上提出的一种新的聚类算法.它根据N个数据点之间的相似度进行聚类,这些相似度可以是对称的,即两个数据点互相之间的相 ...

  2. PHP header( ) 禁止页面后退

    header("Cache-control:no-cache,no-store,must-revalidate"); header("Pragma:no-cache&qu ...

  3. spark 中的RDD编程 -以下基于Java api

    1.RDD介绍:     RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...

  4. JS判断doctype文档模式-document.compatMode

    IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有 ...

  5. IndexAction.java (Java之负基础实战)

    生成Get and Set 方法: 例如:public String view; 右击view > Source > Generate Getters and Setters...

  6. hdu-3790-最短路径问题(dijkstra算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 这题cin会超时i 关于解决cin超时的问题 在main函数开头加上 ios::sync_wit ...

  7. easyui datagrid分页参数获取

    $("#btnDataExport").click(function () { $.messager.show({ title: '导出提示', msg: '每次导出一页商户数据, ...

  8. MapReduce深度分析(一)

    MapReduce深度分析(一) 一.数据流向分析 图为MapReduce数据流向示意图 步骤1.输入文件从HDFS流向到Mapper节点.在一般情况下,存储数据的节点就是Mapper运行的节点,不需 ...

  9. JS之ONLoad事件

    如果我问你window.load和window.onload分别是什么意思,恐怕你会回答我:“这不是页面加载完就执行吗”. 但是答案是不一定,得看你怎么用.看一下例子吧 例1: <!DOCTYP ...

  10. Linux笔记(九) - 软件包管理

    (1)软件包简介1.源码包   脚本安装包2.二进制包(rpm,系统默认包) (2)rpm包管理安装-i 安装 -v 显示详细信息 -h 显示进度--nodeps 不检测依赖性-U 升级例:安装: r ...