KSYClipWriter Class Reference
Inherits from | NSObject |
---|---|
Declared in | KSYClipWriter.h |
Overview
金山云转码SDK iOS版提供了iOS移动设备上的转码合成功能
- 音频编码采用AAC编码,码率可配置;
- 视频频编码采用H.264、H.265编码,码率可配置;
- 支持写入本地flv和mp4文件;
Found: 2017-4-7
hostURL
本地录制,输出路径
@property (nonatomic, readonly) NSURL *hostURL
Discussion
将音视频流写入本地文件 eg: /var/xxxxx/xxx.mp4 /var/xxxxx/xxx.flv
Declared In
KSYClipWriter.h
videoFPS
视频帧率
@property (nonatomic, assign) int videoFPS
Discussion
本地录制的视频帧率,开启编码前丢帧时,帧率生效
编码前丢帧shouldEnableKSYDropModule为YES时,帧率设置生效
编码前丢帧shouldEnableKSYDropModule为NO时,帧率保持与输入帧率一致
Declared In
KSYClipWriter.h
videoCodec
视频编码器 默认为 自动选择
@property (nonatomic, assign) KSYVideoCodec videoCodec
Discussion
video codec used for encode
修改此选项会导致videoEncodePerf值变化
如果需要定制编码档次, 请在修改videoCodec之后再测设置
See Also
Declared In
KSYClipWriter.h
audioCodec
音频编码器 (默认为AAC-HE)
@property (nonatomic, assign) KSYAudioCodec audioCodec
Discussion
audio codec used for encode
See Also
Declared In
KSYClipWriter.h
videoInitBitrate
视频编码码率(单位:kbps, 默认:500)
@property (nonatomic, assign) int videoInitBitrate
Declared In
KSYClipWriter.h
streamMetaData
写入全局附带的metadata (默认为nil)
@property (atomic, copy) NSDictionary *streamMetaData
Discussion
key 一定要是 NSString* 类型的
Declared In
KSYClipWriter.h
videoMetaData
视频流附带的metadata (默认为nil)
@property (atomic, copy) NSDictionary *videoMetaData
Discussion
key 一定要是 NSString* 类型的; 目前有效
Declared In
KSYClipWriter.h
maxKeyInterval
最大关键帧间隔(单位:秒, 默认:3)
@property (nonatomic, assign) float maxKeyInterval
Discussion
即GOP长度 画面静止时,隔n秒插入一个关键帧
Declared In
KSYClipWriter.h
audiokBPS
音频编码码率(单位:kbps)
@property (nonatomic, assign) int audiokBPS
Discussion
音频目标编码码率 (比如48,96,128等)
Declared In
KSYClipWriter.h
liveScene
待编码的视频场景 (默认为KSYLiveScene_Default)
@property (nonatomic, assign) KSYLiveScene liveScene
Discussion
KSY内部会根据场景的特征进行参数调优,开始录制前设置有效
Declared In
KSYClipWriter.h
recScene
本次录制的目标场景 (默认为KSYRecScene_ConstantBitRate)
@property (nonatomic, assign) KSYRecScene recScene
Discussion
用于指定录制时, 视频编码器码率控制的优先目标
恒定码率: 最后视频文件的码率更平稳,但复杂场景质量可能差一些
恒定质量: 最后视频文件的质量更平稳写, 但码率波动要大一些
开始录制前设置有效,
Declared In
KSYClipWriter.h
videoEncodePerf
视频编码性能档次
@property (nonatomic, assign) KSYVideoEncodePerformance videoEncodePerf
Discussion
视频质量和设备资源之间的权衡,开始推流前, videoCodec设置之后,修改有效
选择软编码的默认为KSYVideoEncodePer_LowPower
选择Auto或硬编码的默认为KSYVideoEncodePer_HighPerformance
Declared In
KSYClipWriter.h
bWithVideo
是否处理视频的图像数据 (默认YES)
@property (nonatomic, assign) BOOL bWithVideo
Discussion
Warning: 启动合成前设置为NO, 则在转码过程中无法再开启图像
启动合成前设置为NO, 写入过程中修改本属性无效
Declared In
KSYClipWriter.h
bWithAudio
是否处理音频数据 (默认YES)
@property (nonatomic, assign) BOOL bWithAudio
Declared In
KSYClipWriter.h
mp4FastStart
mp4文件允许快速启动 (默认YES)
@property (nonatomic, assign) BOOL mp4FastStart
Discussion
mp4格式的文件中将moov等index信息放到文件开头
Warning: 启用此开关会在结束是对文件进行处理, 如果要长时间录制,请关闭本选项
Declared In
KSYClipWriter.h
writeState
当前写入状态
@property (nonatomic, readonly) KSYStreamState writeState
Discussion
可以通过该属性获取写入的工作状态
通知: * KSYStreamStateDidChangeNotification 当写入工作状态发生变化时提供通知 * 收到通知后,通过本属性查询新的状态,并作出相应的动作
Declared In
KSYClipWriter.h
– getWriteStateName:
获取写入状态对应的字符串
- (NSString *)getWriteStateName:(KSYStreamState)stat
Parameters
stat |
状态码 |
---|
Return Value
状态名称
Declared In
KSYClipWriter.h
– getCurWriteStateName
获取当前写入状态对应的字符串
- (NSString *)getCurWriteStateName
Return Value
当前状态名称
Declared In
KSYClipWriter.h
streamErrorCode
当前转码/写入的错误码
@property (nonatomic, readonly) KSYStreamErrorCode streamErrorCode
Discussion
可以通过该属性获取写入失败的原因
当streamState 为KSYStreamStateError时可查询
KSYStreamErrorCode_KSYAUTHFAILED 除外
在streamState 为KSYStreamStateConnected 时查询到
状态变化后清0
Declared In
KSYClipWriter.h
writeStateChange
数据流写入状态变化时的回调函数
@property (nonatomic, copy) void ( ^ ) ( KSYStreamState newState ) writeStateChange
Discussion
参数为新状态
Declared In
KSYClipWriter.h
– getKSYWriteErrorCodeName:
获取错误码对应的字符串
- (NSString *)getKSYWriteErrorCodeName:(KSYStreamErrorCode)code
Parameters
code |
错误码 |
---|
Declared In
KSYClipWriter.h
– getCurKSYWriteErrorCodeName
获取当前错误码对应的字符串
- (NSString *)getCurKSYWriteErrorCodeName
Declared In
KSYClipWriter.h
videoFPSChange
帧率应发生变化时的回调函数
@property (nonatomic, copy) void ( ^ ) ( int32_t newVideoFPS ) videoFPSChange
Discussion
参数为建议设定的fps
Declared In
KSYClipWriter.h
– initWithDefaultCfg
初始化方法 (step1)
- (instancetype)initWithDefaultCfg
Discussion
初始化,将下列属性设置为默认值
- _videoFPS = 15;
- videoCodec = KSYVideoCodecAUTO;
- _audiokBPS = 32;
- _videoInitBitrate = 500;
Warning: KSYClipWriter只支持单实例写入,构造多个实例会出现异常
Declared In
KSYClipWriter.h
– startWritingWith:
启动写入文件 (step2)
- (void)startWritingWith:(NSURL *)url
Discussion
本地写入支持mp4和flv两种输出格式,通过url的文件后缀指定
“/var/xxx/xx.mp4”, “/var/xxx/xx.flv”
写入参数主要是视频编码器,音视频码率的设置
See Also
Declared In
KSYClipWriter.h
– stopWriting:
停止写入 (step3)
- (void)stopWriting:(void ( ^ ) ( ))complete
Parameters
complete |
完成回调 |
---|
Discussion
停止文件写入
Declared In
KSYClipWriter.h
– muteStream:
静音 (仍然有音频,只是音量为0)
- (void)muteStream:(BOOL)bMute
Parameters
bMute |
YES / ON |
---|
Declared In
KSYClipWriter.h
– processVideoSampleBuffer:onComplete:
处理一个视频帧(只支持编码前的原始图像数据)
- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer onComplete:(void ( ^ ) ( BOOL ))completion
Parameters
sampleBuffer |
Buffer to process |
---|---|
completion |
当前视频帧处理完成的回调 |
Discussion
应当在开始写入前定期调用此接口,比如按照采集帧率调用
支持的图像格式包括: BGR0,NV12,YUVA444P,YUV420P
Declared In
KSYClipWriter.h
– processVideoPixelBuffer:timeInfo:onComplete:
处理一个视频帧(只支持编码前的原始图像数据)
- (void)processVideoPixelBuffer:(CVPixelBufferRef)pixelBuffer timeInfo:(CMTime)timeStamp onComplete:(void ( ^ ) ( BOOL ))completion
Parameters
pixelBuffer |
待编码的像素数据 |
---|---|
timeStamp |
待编码的时间戳 |
completion |
当前视频帧处理完成的回调 |
Discussion
应当在开始写入前定期调用此接口,比如按照采集帧率调用
支持的图像格式包括: BGR0,NV12,YUVA444P,YUV420P
Declared In
KSYClipWriter.h
– processAudioSampleBuffer:
处理一段音频数据
- (void)processAudioSampleBuffer:(CMSampleBufferRef)sampleBuffer
Parameters
sampleBuffer |
Buffer to process |
---|
Discussion
应当在开始写入前定期调用此接口,与processVideoSampleBuffer 交错进行
Warning: 目前只支持 单通道 S16 格式的PCM数据
Declared In
KSYClipWriter.h
encodeVKbps
查询当前编码的视频码率大小(每秒更新)
@property (nonatomic, readonly) double encodeVKbps
Discussion
该码率为编码器产生的视频码率大小,单位为kbps
Declared In
KSYClipWriter.h
encodeAKbps
查询当前编码的音频码率大小(每秒更新)
@property (nonatomic, readonly) double encodeAKbps
Discussion
该码率为编码器产生的音频码率大小,单位为kbps
See Also
Declared In
KSYClipWriter.h
encodingFPS
查询当前编码的平均视频帧率
@property (nonatomic, readonly) double encodingFPS
Discussion
采集设备的输出帧率为videoFPS,约等于编码的目标帧率
编码的视频帧率不会高于采集帧率,但是当CPU资源不足时,编码帧率会低于采集帧率
See Also
Declared In
KSYClipWriter.h
encodedFrames
查询本次视频写入已经编码的总帧数
@property (nonatomic, readonly) int encodedFrames
Discussion
从开始写入到现在,编码过的视频总帧数
Declared In
KSYClipWriter.h
logBlock
clip writer
@property (nonatomic, copy) void ( ^ ) ( NSString *logJson ) logBlock
Discussion
相关字段说明请联系金山云技术支持
Declared In
KSYClipWriter.h
shouldEnableKSYDropModule
是否允许编码前丢帧,默认开启(videoFPS生效) @warnning 离线转码需要输出所有帧的情况下开启,videoFPS将不生效,根据输入源的fps保持一致
@property (nonatomic, assign) BOOL shouldEnableKSYDropModule
Declared In
KSYClipWriter.h