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