API 参考

更新时间: 2021/11/01 12: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 设置美白强度

此文档是否对你有帮助?
有帮助
去反馈
  • API概览
  • 总体参数说明
  • 音视频参数说明
  • 枚举值参数说明
  • API 变更
  • 3.1.0 -> 3.1.1 API 变更
  • 2.9.0 -> 3.0.0 API 变更
  • 2.8.0 -> 2.9.0 API 变更
  • 2.7.0 -> 2.8.0 API 变更
  • 2.6.0 -> 2.7.0 API 变更
  • 2.5.1 -> 2.6.0 API 变更
  • 2.4.0 -> 2.5.0 API 变更
  • 2.3.1 -> 2.4.0 API 变更
  • 2.2.0 -> 2.3.0 API 变更
  • 2.1.0 -> 2.2.0 API 变更
  • 2.0.2 -> 2.1.0 API 变更
  • 2.0.1 -> 2.0.2 API 变更