直播服务iOS API文档¶
新浪云在线直播API的iOS版SDK。需要在 http://www.sinacloud.com 开通使用。
- Github地址 https://github.com/sinacloud/LiveStream_SDK_iOS
- Apache2.0协议
使用方法¶
方法一:使用CocoaPods¶
- 首先在Podfile中添加
pod 'LiveStreamSDK', :git=> 'https://github.com/sinacloud/LiveStream_SDK_iOS.git'
- 然后执行
pod install
- 打开xcworkspace文件
Quick Start¶
- 配置AK、SK
建议在项目初始化阶段进行配置。需要通过SinaCloud在线直播服务的控制面板查看AK、SK.
[LiveStreamSDK configWithAK:@"xxx" andSK:@"xxxxx"];
- 查看当前已有的频道列表信息
NSURLSessionDataTask *task = [[LiveStreamSessionManager manager] getTubeList:^(id responseObject, NSError *error) {
if (!error) {
// 请求成功,获得列表信息
} else {
// 处理错误信息
}
}];
详细API说明¶
LiveStreamSDK¶
用来配置整个SDK所需要的AK、SK。参数需要到SinaCloud在线直播服务的控制面板进行查看。
注意:建议在项目初始化时配置这两个参数。
/**
配置LiveStreamSDK中的AK、SK.
@param ak 通过SinaCloud控制面板查看AK
@param sk 通过SinaCloud控制面板查看SK
*/
+(void)configWithAK:(NSString *_Nonnull)ak
andSK:(NSString *_Nonnull)sk;
LiveStreamSessionManager¶
用来处理SDK的API请求服务。该类采用单例模式。
初始化¶
/**
单例方法,在使用该单例方法获得实例之前,需要通过LiveStreamSDK的 +(void)configWithAK:(NSString *)ak andSK:(NSString *)sk; 方法配置AK、SK.
@return LiveStreamSessionManager实例
*/
+(instancetype)manager;
获取频道列表¶
/**
获取频道列表
@param callback 回调方法
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *)getTubeList:(void (^)(id responseObject, NSError *error))callback;
请求成功时,回调方法返回NSArray
类型的responseObject
,如下
[{
"conn_limit" = 0;
"create_time" = "2016-03-02 17:45:31";
description = inittest;
name = hello;
status = 1;
"tube_id" = xxxxxxx;
},...,{
...
}]
返回参数说明:
- conn_limit 频道并发数限制
- create_time 频道创建时间
- description 频道描述信息
- name 频道名称
- status 频道状态:0 表示未开启;1 表示无信号;2 表示正在播放
- tube_id 频道唯一标示Id
创建频道¶
/**
创建频道,成功时callback返回tube_id(频道Id)
@param name 频道名称
@param description 频道描述
@param callback 回调方法
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *)createTube:(NSString *)name
description:(NSString *)description
callback:(void (^)(id responseObject, NSError *error))callback;
请求成功时,回调方法返回NSDictionary
类型的responseObject
.
返回参数说明:
- tube_id 频道唯一标示Id
删除频道¶
/**
删除频道
@param tubeId 频道Id
@param callback 回调方法
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *)deleteTube:(NSString *)tubeId
callback:(void (^)(id responseObject, NSError *error))callback;
更新频道信息¶
/**
更新频道信息
@param tubeId 频道Id
@param name 频道名称
@param description 频道描述
@param callback 回调方法
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *)updateTube:(NSString *)tubeId
name:(NSString *)name
description:(NSString *)description
callback:(void (^)(id responseObject, NSError *error))callback;
查询频道信息¶
/**
查询频道信息,包括直播地址,推流地址等
@param tubeId 频道Id
@param callback 回调方法
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *)queryTube:(NSString *)tubeId
callback:(void (^)(id responseObject, NSError *error))callback;
请求成功时,回调方法返回NSDictionary
类型的responseObject
,如下:
{
description = 1457604486;
name = 1457604486;
"play_url" = {
"hls_low" = "hls.sinacloud.com/play_low/xxxxxxxxx.m3u8";
"hls_origin" = "hls.sinacloud.com/play/xxxxxxxxx.m3u8";
};
"publish_url" = "rtmp://live2.sinacloud.com/publish/xxxxxxxxx";
status = 0;
"tube_id" = xxxxxxxxx;
}
返回参数说明:
- description 频道描述信息
- name 频道名称
- status 频道状态:0 表示未开启;1 表示无信号;2 表示正在播放
- tube_id 频道唯一标示Id
- publish_url 推流地址
- play_url NSDictionary 类型HLS播放地址:
- hls_low 低品质HLS播放地址
- hls_origin 原品质HLS播放地址
开始直播¶
注意:在往服务器上推流之前,请确保先调用该方法开启直播状态。
/**
开始直播,需要调用此方法成功后才能成功推送直播流
@param tubeId 频道Id
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *_Nullable)startTube:(NSString *_Nonnull)tubeId
callback:(nullable void (^)(id _Nullable responseObject, NSError *_Nullable error))callback;
停止直播¶
/**
停止直播,停止后推送地址和直播地址失效
@param tubeId 频道Id
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *)stopTube:(NSString *)tubeId
callback:(void (^)(id responseObject, NSError *error))callback;
查询频道当前状态¶
/**
查询频道当前状态、在线人数等信息
@param tubeId 频道Id
@return NSURLSessionDataTask实例
*/
-(NSURLSessionDataTask *)getTubeStatus:(NSString *)tubeId
callback:(void (^)(id responseObject, NSError *error))callback;
LiveStreamPlayer¶
简易直播流HLS播放器视图,根据当前网络自动切换播放品质。继承自UIView
,需要通过在对应视图控制器中添加LiveStreamPlayerDelegate
的代理方法来监听播放器的状态。
初始化¶
通过频道Id初始化播放器。
/**
初始化方法
@param tubeId 频道Id
@return LiveStreamPlayer实例
*/
-(instancetype)initWithTubeId:(NSString *)tubeId;
属性¶
@property(nonatomic, readonly, strong) NSString *tubeId; // 频道Id
@property(nonatomic, readonly, strong) NSString *tubeName; // 频道名称
@property(nonatomic, readonly, strong) NSString *tubeDescription; // 频道描述
@property(nonatomic, weak) id<LiveStreamPlayerDelegate> delegate; // 代理
相关方法¶
/**
开始播放,需要在收到 LSPlayerStatusInited 初始化完成的回调通知之后调用该方法
*/
-(void)play;
/**
暂停播放
*/
-(void)pause;
LiveStreamPlayerDelegate¶
代理方法如下,当状态改变时触发:
/**
LiveStreamPlayer的代理方法,用来监听播放状态
@param status 播放器的状态
*/
-(void)statusChanged:(LSPlayerStatus)status;
LSPlayerStatus¶
播放器的状态:
- LSPlayerStatusUnknow=0 未知状态
- LSPlayerStatusIniting 正在初始化
- LSPlayerStatusInitFailed 初始化失败
- LSPlayerStatusInited 初始化完成
- LSPlayerStatusReadyToPlay 缓冲完成,开始播放
- LSPlayerStatusFailed 播放失败