API 参考
更新时间: 2021/11/01 20:12:38
有关API的详细说明,可参见SDK包中docs,打开index.html即可。
直播推流 iOS SDK API 文档详见API文档
API概览
类别 | API名称 | 功能 |
---|---|---|
创建推流实例1 | - (instancetype)initLiveStream:(NSString *)liveStreamingURL; | 只需要设置推流地址的创建直播推流对象,其它推流相关参数将采用默认配置 |
创建推流实例2 | - (instancetype)initLiveStream:(NSString *)liveStreamingURL withVideoParaCtxConfiguration:(LSVideoParaCtxConfiguration *)videoParaCtx; | 不仅设置直播推流的地址,同时提供直播中视频相关参数设置 |
创建推流实例3 | - (instancetype)initLiveStream:(NSString *)liveStreamingURL withLivestreamParaCtxConfiguration:(LSLiveStreamingParaCtxConfiguration *)configuration; | 不仅设置直播推流地址,同时提供直播中所有可配置参数设置 |
销毁推流实例 | -(void)unInitLiveStream; | 反初始化:释放资源;建议在调用unInitLiveStream之后,将mediaCapture实例对象置为空,用于完全释放资源 |
打开视频预览 | -(void)startVideoPreview:(UIView*)preview | SDK提供视频预览功能,上层需要创建 UIView 对象,作为视频预览的窗口 |
暂停视频预览 | - (void)pauseVideoPreview | 画面不移除,暂停视频采集 |
继续视频预览 | - (void)resumeVideoPreview | 恢复视频采集 |
开始直播 | - (void)startLiveStream:(void(^)(NSError *error))completionBlock | 开始音视频推流,开始失败的具体消息由 NSError参数给出 |
结束推流 | - (void)stopLiveStream:(void(^)(NSError *error))completionBlock | 结束音视频推流,结束失败的具体消息由 NSError参数给出 |
中断视频推流 | - (void)pauseVideoLiveStream | 中断视频编码,最终不会发送 |
重启视频推流 | - (void)resumeVideoLiveStream | 恢复视频编码,最终发送 |
中断音频推流 | - (BOOL)pauseAudioLiveStream | 中断音频编码,最终不会发送 |
重启音频推流 | - (BOOL)resumeAudioLiveStream | 恢复音频编码,最终发送 |
更新自定义统计数据 | - (void)updateCutomStatistics:(NSDictionary *)customDict | 添加一些自定义的统计数据到网易云信统计数据管理平台 |
检查是否正在直播 | - (BOOL)checkIsLiving | 获取当前直播状态 |
设置日志的level | - (void)setTraceLevel:(LSMediaLog)logLevel | 设置日志的级别 |
获取当前sdk的版本号 | + (NSString*) getSDKVersionID | 获取当前sdk的版本号 |
获取当前视频帧时间戳 | -(uint64_t)currentSyncTimestamp | 获取当前视频帧时间戳,对应syncTimestamp一起使用 |
获取当前时间戳 | -(uint64_t)currentStreamTimestamp | 获取当前时间戳,对应streamTimestampPassthrough一起使用 |
发送自定义数据 | -(NSError *)sendCustomData:(LSCustomDataObject *)sendObject | 发送自定义数据 |
开始录制并保存本地文件(mp4录制) | - (BOOL)startRecord:(NSString *)recordFileName videoStreamingQuality:(LSVideoStreamingQuality)videoStreamingQuality | 开启mp4录制 |
停止本地录制 | - (BOOL)stopRecord | 停止mp4录制 |
开始播放混音文件 | - (BOOL)startPlayMusic:(NSString*)musicURL withEnableSignleFileLooped:(BOOL)enableLoop | 支持是否循环播放 |
结束播放混音文件,释放播放文件 | - (BOOL)stopPlayMusic | 结束播放混音文件 |
恢复播放混音文件 | - (BOOL)resumePlayMusic | 恢复播放混音文件 |
中断播放混音文件 | - (BOOL)pausePlayMusic | 中断播放混音文件 |
设置混音强度 | - (void)setMixIntensity:(int )value | 设置混音强度 |
采集模块采集的视频数据回调 | void (^externalCaptureSampleBufferCallback)(CMSampleBufferRef sampleBuffer) | 采集数据回调给外部用户进行视频前处理 |
将外部前处理之后的视频数据发送给sdk | -(void)externalInputSampleBuffer:(CMSampleBufferRef)sampleBuffer | 用户将外部进行视频前处理好回送给SDK,进行编码发送 |
麦克风采集到的原始裸数据的回调 | void (^externalCaptureAudioRawData)(AudioBufferList *bufferList,NSInteger inNumberFrames) | 采集数据回调给外部用户进行音频前处理,同步处理 |
将处理完的音频裸数据送回来 | -(void)externalInputAudioBufferList:(AudioBufferList *)bufferList inNumberFrames:(NSInteger)inNumberFrames | 用户将外部进行音频前处理好回送给SDK,进行编码发送 |
开始测速 | -(void)startSpeedCalc:(NSString *)url success:(void(^)(NSMutableArray *array))success fail:(void(^)())fail | 支持直播开始前测速,选择最优链路推流 |
结束测速 | -(void)stopSpeedCalc | 结束此次测速 |
测速之前设置测速次数和上传数据大小 | -(void)setSpeedCacl:(NSInteger)count Capacity:(unsigned long long)capacity | 支持设置测速次数和上传文件大小,建议不超过3次,文件大小不宜过大,否则等待时间较久 |
直播过程中发生错误的回调函数 | void (^onLiveStreamError)(NSError *error) | 直播过程中,由于各种网络原因引起直播发送错误或者直播断开的情况都会通过该回调通知用户 |
得到直播过程中的统计信息 | void (^onStatisticInfoGot)(LSStatisticsObject* statistics) | 直播过程中,实时显示推流的具体信息指标 |
flash摄像头 | BOOL flash | 打开或者关闭摄像头flash |
摄像头变焦功能属性:最大拉伸值 | CGFloat maxZoomScale | iphone4s以及之前的版本,videoMaxZoomFactor=1;不支持拉伸 |
摄像头变焦功能属性:拉伸值 | CGFloat zoomScale | 1,maxZoomScale] iphone4s以及之前的版本,videoMaxZoomFactor=1;不支持拉伸 |
摄像头变焦功能属性:拉伸值变化回调block | void (^onZoomScaleValueChanged)(CGFloat value) | 调整摄像头变焦,实时回调对应的值给用户,用以调整相应的UI |
切换前后摄像头 | - (LSCameraPosition)switchCamera:(LSSwitchModuleVideoCameraPositionBlock)cameraPostionBlock | 前后摄像头切换成功回调告诉用户 |
切换分辨率 | - (BOOL)switchVideoStreamingQuality:(LSVideoStreamingQuality)videoResolution block:(LSVideoStreamingQualityBlock)videoResolutionBlock | 支持直播过程中切换分辨率,切换分辨率,水印将自动清除,需要外部根据分辨率,再次设置水印大小 |
直播推流之前设置如下参数 | - (void)setBitrate:(int)bitrate fps:(int)fps cameraOrientation:(LSCameraOrientation) cameraOrientation | 直播开始推流之前可以再次设置帧率、码率、采集方向 |
切换本地预览镜像 | -(BOOL)changeIsFrontPreViewMirrored | 针对主播,本地观察预览画面左右镜像 |
切换编码镜像 | -(BOOL)changeIsFrontCodeMirrored | 针对拉流端观众,拉流观察画面左右镜像 |
获取视频截图 | - (void)snapShotWithCompletionBlock:(LSFrameCaptureCompletionBlock)completionBlock | 可以实时截取当前画面的一张图片 |
设置滤镜类型 | - (void)setFilterType:(LSGpuImageFilterType)filterType | 设置滤镜类型:黑白、自然、粉嫩、怀旧 |
设置磨皮强度 | - (void)setSmoothFilterIntensity:(float)value | 设置人脸的磨皮效果【0-1】 |
设置美白强度 | - (void)setWhiteningFilterIntensity:(float)value | 设置美白强度【0-1】 |
调节曝光度 | -(void)adjustExposure:(CGFloat)exposure | 调整画面的曝光度(-10.0 - 10.0 ,默认为0.0) |
添加涂鸦 | - (void)addGraffiti:(UIImage*)image rect:(CGRect)rect location:(LSWaterMarkLocation)location | 每次设置一张图片,从而实现涂鸦的一个动态变化,类似可以做一个画板 |
添加静态视频水印 | - (void) addWaterMark: (UIImage*) image rect: (CGRect) rect location: (LSWaterMarkLocation) location | 静态水印一般用作视频版权logo显示 |
关闭本地预览静态水印 | - (void)closePreviewWaterMark:(BOOL)isClosed | 可以关闭本地预览静态水印,但是拉流端还是存在的 |
添加动态视频水印 | - (void) addDynamicWaterMarks: (NSArray*) imageArray fpsCount: (unsigned int)count loop: (BOOL)looped rect: (CGRect) rect location: (LSWaterMarkLocation) location | 动态水印一般用作视频广告推广显示 |
关闭本地预览动态水印 | - (void)closePreviewDynamicWaterMark:(BOOL)isClosed | 可以关闭本地预览动态水印,但是拉流端还是存在的 |
清除水印 | - (void)cleanWaterMark | 清除之前添加的所有涂鸦、静态水印、动态水印 |
总体参数说明
音视频参数说明
音频参数说明LSAudioParaCtxConfiguration
参数 | 类型 | 说明 |
---|---|---|
samplerate | NSInteger | 音频的样本采集率:默认44100 |
numOfChannels | NSInteger | 音频采集的通道数:单声道,双声道,默认单声道 |
frameSize | NSInteger | 音频采集的帧大小:默认2048 |
bitrate | NSInteger | 音频编码码率:默认64k:64000 |
isUseExternalCapture | BOOL | 是否使用外部音频采集,默认不开启 |
isUseAudioPreProcess | BOOL | 是否进行音频前处理,默认开启 |
视频参数说明LSVideoParaCtxConfiguration
参数 | 类型 | 说明 |
---|---|---|
fps | NSInteger | 视频的帧率.(0~30],默认为20 |
bitrate | NSInteger | 码率,默认为500000 |
videoStreamingQuality | LSVideoStreamingQuality | 视频分辨率,默认高清 |
cameraPosition | LSCameraPosition | 视频采集前后摄像头,默认前置 |
interfaceOrientation | LSCameraOrientation | 视频采集方向,默认竖屏 |
videoRenderMode | LSVideoRenderScaleMode | 视频显示端比例,默认16:9 |
isCameraFlashEnabled | BOOL | 是否开启摄像头flash功能,默认开启 |
isCameraZoomPinchGestureOn | BOOL | 是否需要打开摄像头收视响应变焦功能,默认开启 |
isFrontCameraMirroredPreView | BOOL | 是否镜像前置摄像头预览.(针对本地预览),默认开启 |
isFrontCameraMirroredCode | BOOL | 是否镜像前置摄像头编码.(针对拉流端),默认不开启 |
isVideoFilterOn | BOOL | 是否打开滤镜支持功能.默认开启 |
filterType | LSGpuImageFilterType | 滤镜类型,默认自然 |
isVideoWaterMarkEnabled | BOOL | 是否打开水印支持.默认开启 |
isQosOn | BOOL | 是否打开qos功能.默认开启 |
isOutputRGB | BOOL | 是否输出RGB数据.默认不开启 |
isUseExternalCapture | BOOL | 是否使用外部视频采集,默认不开启 |
isUseHwBFrame | BOOL | 是否使用硬件编码B帧,只在开启硬件编码的情况下才使用,默认开启 |
音视频参数说明LSLiveStreamingParaCtxConfiguration
参数 | 类型 | 说明 |
---|---|---|
eHaraWareEncType | LSHardWareEncEnable | 是否开启硬件编码类型,默认开启 |
eOutStreamType | LSOutputStreamType | 推流类型:音视频,视频,音频,默认为音视频 |
eOutFormatType | LSOutputFormatType | 推流协议:RTMP,FLV.默认为RTMP |
sLSVideoParaCtx | LSVideoParaCtxConfiguration | 推流视频相关参数 |
sLSAudioParaCtx | LSAudioParaCtxConfiguration | 推流音频相关参数 |
uploadLog | BOOL | 是否上传sdk日志,默认开启 |
syncTimestamp | BOOL | 同步时间戳透传开关,默认关闭,推流类型必须包含视频,同时需要网易云信播放器支持 |
streamTimestampPassthrough | BOOL | 网易云信透传时间戳,但完全透传功能需要联系网易云信开通 |
syncTimestampBaseline | BOOL | 同步时间戳基准:true为从0开始的基准,false为相对机器开机时间基准,默认为true |
privateConfig | BOOL | 私有化配置开关,默认关闭 |
统计信息参数说明LSStatisticsObject
参数 | 类型 | 说明 |
---|---|---|
videoSendFrameRate | unsigned int | 视频发送帧率 |
videoSendBitRate | unsigned int | 视频发送码率 |
videoSendWidth | unsigned int | 视频发送分辨率的宽 |
videoSendHeight | unsigned int | 视频发送分辨率的高 |
videoSetFrameRate | unsigned int | 设置的视频帧率 |
videoSetBitRate | unsigned int | 设置的视频码率 |
videoSetWidth | unsigned int | 设置的分辨率宽 |
videoSetHeight | unsigned int | 设置的分辨率高 |
audioSendBitRate | unsigned int | 音频的发送码率 |
videoEncodeTime | unsigned int | 视频编码一帧的时间 |
videoMuxAndSendTime | unsigned int | 视频发送一帧的时间 |
audioEncodeTime | unsigned int | 音频编码一帧的时间 |
audioMuxAndSendTime | unsigned int | 音频发送一帧的时间 |
writeFrameTime | unsigned int | 如果卡顿累积了数据,则上报卡顿的平均耗时;否则上报非卡顿的平均耗时 |
type | LS_QOSLVL_TYPE | 网络状况类型 |
videoSendBufferQueueCount | unsigned int | 视频发送缓存队列当前大小 |
audioSendBufferQueueCount | unsigned int | 音频发送缓存队列当前大小 |
自定义数据对象参数说明LSCustomDataObject
参数 | 类型 | 说明 |
---|---|---|
sendConetnt | NSString | 发送内容:长度控制在1600,默认为空 |
sendInterval | NSInteger | 发送间隔:表示隔interval帧发一帧自定义数据,最大50,默认为0;如果为0,表示逐帧发送;如果是1,表示隔一帧发送一次;如果是5,表示隔5帧发送一次 |
sendTotalCites | NSInteger | 发送总次数:最大500,默认为10 |
枚举值参数说明
水印位置LSWaterMarkLocation参数说明
参数 | 说明 |
---|---|
LS_WATERMARK_LOCATION_RECT | 由rect的origin定位置 |
LS_WATERMARK_LOCATION_LEFTUP | 左上角 |
LS_WATERMARK_LOCATION_LEFTDOWN | 左下角 |
LS_WATERMARK_LOCATION_RIGHTUP | 右上角 |
LS_WATERMARK_LOCATION_RIGHTDOWN | 右下角 |
LS_WATERMARK_LOCATION_CENTER | 中间 |
滤镜类型LSGpuImageFilterType参数说明
参数 | 说明 |
---|---|
LS_GPUIMAGE_NORMAL | 无滤镜 |
LS_GPUIMAGE_SEPIA | 黑白 |
LS_GPUIMAGE_ZIRAN | 自然 |
LS_GPUIMAGE_MEIYAN1 | 粉嫩 |
LS_GPUIMAGE_MEIYAN2 | 怀旧 |
摄像头采集方向LSCameraOrientation参数说明
参数 | 说明 |
---|---|
LS_CAMERA_ORIENTATION_PORTRAIT | 画面正向垂直 |
LS_CAMERA_ORIENTATION_UPDOWN | 画面倒向 |
LS_CAMERA_ORIENTATION_RIGHT | 画面向右 |
LS_CAMERA_ORIENTATION_LEFT | 画面向左 |
视频分辨率LSVideoStreamingQuality参数说明
参数 | 说明 |
---|---|
LS_VIDEO_QUALITY_LOW | 低清 352*288 |
LS_VIDEO_QUALITY_MEDIUM | 标清 480*360 |
LS_VIDEO_QUALITY_HIGH | 高清 640*480 |
LS_VIDEO_QUALITY_SUPER | 超清 960*540 |
LS_VIDEO_QUALITY_SUPER_HIGH | 超高清 (1280*720) |
摄像头类型LSCameraPosition参数说明
参数 | 说明 |
---|---|
LS_CAMERA_POSITION_BACK | 后置摄像头 |
LS_CAMERA_POSITION_FRONT | 前置摄像头 |
视频显示模式LSVideoRenderScaleMode参数说明
参数 | 说明 |
---|---|
LS_VIDEO_RENDER_MODE_SCALE_NONE | 采集多大分辨率,则显示多大分辨率 |
LS_VIDEO_RENDER_MODE_SCALE_16x9 | 无论采集多大分辨率,显示比例为16:9 |
硬件编码模式LSHardWareEncEnable参数说明
参数 | 说明 |
---|---|
LS_HRD_NO | 音视频都使用软件编码 |
LS_HRD_AUDIO | 音频使用硬件编码,视频使用软件编码 |
LS_HRD_VIDEO | 视频使用硬件编码,音频使用软件编码 |
LS_HRD_AV | 音视频都使用硬件编码 |
推流协议LSOutputFormatType参数说明
参数 | 说明 |
---|---|
LS_OUT_FMT_FLV | flv协议 |
LS_OUT_FMT_RTMP | rtmp协议 |
推流类型LSOutputStreamType参数说明
参数 | 说明 |
---|---|
LS_HAVE_AUDIO | 只推音频 |
LS_HAVE_VIDEO | 只推视频 |
LS_HAVE_AV | 音视频一起推 |
网络等级类型LS_QOSLVL_TYPE参数说明
参数 | 说明 |
---|---|
LS_QOSLVL_HIGH | 网络好 |
LS_QOSLVL_MIDDLE | 网络一般 |
LS_QOSLVL_LOW | 网络差 |
API 变更
3.1.0 -> 3.1.1 API 变更
- (BOOL)startRecord:(NSString *)recordFileName videoStreamingQuality:(LSVideoStreamingQuality)videoStreamingQuality videoBitrate:(NSInteger)bitrate
->- (BOOL)startRecord:(NSString *)recordFileName videoStreamingQuality:(LSVideoStreamingQuality)videoStreamingQuality
本地mp4录制接口去除码率设置字段,SDK自动根据分辨率填充码率
2.9.0 -> 3.0.0 API 变更
-
@property(nonatomic, assign) BOOL privateConfig;
新增私有化配置开关,默认关闭 -
@property(nonatomic, assign) unsigned int audioSendBufferQueueCount;
新增统计音频发送缓存队列当前大小 -
- (BOOL)startRecord:(NSString *)recordFileName
->- (BOOL)startRecord:(NSString *)recordFileName videoStreamingQuality:(LSVideoStreamingQuality)videoStreamingQuality videoBitrate:(NSInteger)bitrate;
本地mp4录制接口增加目标分辨率和码率的设置
2.8.0 -> 2.9.0 API 变更
-
@property(nonatomic, assign) BOOL syncTimestampBaseline
新增同步时间戳基准:true为从0开始的基准,false为相对机器开机时间基准,默认为true -
-(NSError *)sendCustomData:(LSCustomDataObject *)sendObject;
新增发送自定义数据接口 -
@property(nonatomic, assign) unsigned int videoSendBufferQueueCount;
新增统计视频发送缓存队列当前大小 -
@interface LSCustomDataObject: NSObject
新增SEI自定义数据对象
2.7.0 -> 2.8.0 API 变更
-
@property(nonatomic, assign) BOOL streamTimestampPassthrough
新增网易云信透传时间戳,但完全透传功能需要联系网易云信开通 -
-(uint64_t)currentStreamTimestamp
新增获取当前时间戳接口,对应streamTimestampPassthrough一起使用
2.6.0 -> 2.7.0 API 变更
-
@property(nonatomic, assign) BOOL timestampTransparency
->@property(nonatomic, assign) BOOL syncTimestamp
同步时间戳透传开关,默认关闭,推流类型必须包含视频,同时需要网易云信播放器支持 -
-(NSInteger)getLastSendTime
->-(uint64_t)currentSyncTimestamp
获取当前视频帧时间戳
2.5.1 -> 2.6.0 API 变更
-
@property (nonatomic,copy) void (^externalCaptureAudioRawData)(unsigned char *rawData,unsigned int rawDataSize)
->@property (nonatomic,copy) void (^externalCaptureAudioRawData)(AudioBufferList *bufferList,NSInteger inNumberFrames)
麦克风采集到的原始裸数据的回调,交由外部进行自定义处理,同步处理 -
-(void)externalInputAudioRawData:(unsigned char*)rawData dataSize:(unsigned int)rawDataSize
->-(void)externalInputAudioBufferList:(AudioBufferList *)bufferList inNumberFrames:(NSInteger)inNumberFrames
用户可以通过这个接口,将第三方采集的音频数据送回来,数据的格式要保持不变,由视频云sdk推流出去 -
-(NSInteger)getLastSendTime
新增获取最后发送的那一帧的时间戳接口 -
@property(nonatomic, assign) BOOL timestampTransparency
新增网易云信透传时间戳,但完全透传功能需要联系网易云信开通
2.4.0 -> 2.5.0 API 变更
@property (nonatomic,copy) void (^onStatisticInfoGot)(LSStatistics* statistics)
-> -@property (nonatomic,copy) void (^onStatisticInfoGot)(LSStatisticsObject* statistics)
统计信息回调由结构体改为对象
2.3.1 -> 2.4.0 API 变更
-
@property(nonatomic, weak) id<LSAudioCaptureDelegate> audioCaptureDelegate;
新增音频采集delegate,包括音频中断开始、中断结束、数据流监控音频采集20s内没有数据,同时将原来的伴音文件播放结束通知改为回调 -
- (void)updateCutomStatistics:(NSDictionary *)customDict;
新增更新自定义统计数据接口 -
- (BOOL)checkIsLiving;
新增检查是否正在直播接口 -
- (NSString*) getSDKVersionID;
-> -+ (NSString*) getSDKVersionID;
获取当前sdk的版本号,由实例方法改成类方法
2.2.0 -> 2.3.0 API 变更
- (void)adjustExposure:(CGFloat)exposure
新增调节曝光度
2.1.0 -> 2.2.0 API 变更
- (BOOL)startLiveStreamWithError:(NSError )outError
->- (void)startLiveStream:(void(^)(NSError *error))completionBlock
开始直播
2.0.2 -> 2.1.0 API 变更
-
-(instancetype)initLiveStream:(NSString *)liveStreamingURL withVideoParaCtx:(LSVideoParaCtx)videoParaCtx
->- (instancetype)initLiveStream:(NSString *)liveStreamingURL withVideoParaCtxConfiguration:(LSVideoParaCtxConfiguration *)videoParaCtx
初始化mediacapture -
-(instancetype)initLiveStream:(NSString *)liveStreamingURL withLivestreamParaCtx:(LSLiveStreamingParaCtx)lsParaCtx
->- (instancetype)initLiveStream:(NSString *)liveStreamingURL withLivestreamParaCtxConfiguration:(LSLiveStreamingParaCtxConfiguration *)configuration
初始化mediacapture -
- (void)setVideoParameters:(LSVideoStreamingQuality)videoResolution bitrate:(int)bitrate fps:(int)fps cameraOrientation:(LSCameraOrientation) cameraOrientation
->- (void)setBitrate:(int)bitrate fps:(int)fps cameraOrientation:(LSCameraOrientation) cameraOrientation
直播推流设置参数 -
- (void)switchVideoStreamingQuality:(LSVideoStreamingQuality)videoResolution block:(LSVideoStreamingQualityBlock)videoResolutionBlock;
新增-切换分辨率,支持直播过程中切换分辨率,切换分辨率,水印将自动清除,需要外部根据分辨率,再次设置水印大小
2.0.1 -> 2.0.2 API 变更
-
- (LSCameraPosition)switchCamera
->- (LSCameraPosition)switchCamera:(LSSwitchModuleVideoCameraPosition)cameraPostionBlock
切换前后摄像头,增加摄像头切换回调 -
- (void)setContrastFilterIntensity:(float)value
->- (void)setWhiteningFilterIntensity:(float)value
设置美白强度