-
Notifications
You must be signed in to change notification settings - Fork 271
debugInfo
本文可以帮助开发者定位问题。
同时,如果开发者希望向金山云提交issue,以下内容可以指导快速收集问题依赖的线索。
通过KSYGPUStreamerKit类的getKSYVersion方法获取当前版本信息
[_kit getKSYVersion];
- 通过KSYGPUStreamerKit类的captureState可查询当前采集状态
_kit.captureState
- 通过KSYGPUStreamerKit类的getCurCaptureStateName可获取字符串形式表示的采集状态
[_kit.streamerBase getCurCaptureStateName]
- 通过KSYGPUStreamerKit类的videoFPS可获取当前采集帧率
_kit.videoFPS
通过KSYStreamerBase类的streamID可获取当前推流的事件ID,用于全流程追踪流信息。
_kit.streamerBase.streamID
通过KSYStreamerBase类的rtmpHostIP可获取当前推流服务器的主机IP,用于定位连接节点,排查网络问题。
_kit.streamerBase.rtmpHostIP
- 通过KSYStreamerBase类的streamState可查询当前推流状态
_kit.streamerBase.streamState
- 通过KSYStreamerBase类的getCurStreamStateName可获取字符串形式表示的推流状态
[_kit.streamerBase getCurStreamStateName]
通过KSYStreamerBase类的encodeVKbps可获取当前编码的视频码率大小,每一秒钟更新一次,更新的是一秒观察区间的编码视频码率。该值并不是真实的视频发送码率(存在丢帧)。
_kit.streamerBase.encodeVKbps
通过KSYStreamerBase类的encodeAKbps可获取当前编码的音频码率大小,每一秒钟更新一次,更新的是一秒观察区间的编码音频码率
_kit.streamerBase.encodeAKbps
通过KSYStreamerBase类的encodingFPS可获取当前编码的平均视频帧率,每一秒钟更新一次,更新的是一秒观察区间的视频帧率,如果需要其他长度的观察区间的统计结果,请参考3.7自行计算
_kit.streamerBase.encodingFPS
通过KSYStreamerBase类的encodedFrames可获取本次推流编码的视频总帧数,用于计算一定观察区间的视频编码帧率(观察区间需要自己计算)
_kit.streamerBase.encodedFrames
通过KSYStreamerBase类的droppedVideoFrames可获取本次推流编码后,由于网络发送阻塞导致丢弃的帧数,配合encodedFrames可以计算丢帧率
_kit.streamerBase.droppedVideoFrames
通过KSYStreamerBase类的uploadedKByte可获取本次推流发送的流量大小 ,用于计算一定观察区间的发送码率(音视频)(观察区间需要自己计算)
_kit.streamerBase.uploadedKByte
通过KSYStreamerBase类的currentUploadingKbps可获取当前实际推送的码率大小,统计周期为1秒,如果需要计算其它长度周期的码率,请自行计算,参考3.9
_kit.streamerBase.currentUploadingKbps
当发现推流模块KSYNetStateCode为KSYNetStateCode_SEND_PACKET_SLOW,标识当前推流发送困难,将引入播放端卡顿。
此时推流发送包时间过长,单次发送超过500毫秒。
查询接口:
注册KSYNetStateEventNotification通知:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onNetStateEvent:)
name:KSYNetStateEventNotification
object:nil];
响应KSYNetStateEventNotification事件,查询_kit.streamerBase.netStateCode属性:
- (void) onNetStateEvent:(NSNotification *)notification {
KSYNetStateCode netEvent = _kit.streamerBase.netStateCode;
if ( netEvent == ) {
NSLog(@"bad network" );
}
else if ( netEvent == KSYNetStateCode_EST_BW_RAISE ) {
NSLog(@"bitrate raising" );
}
else if ( netEvent == KSYNetStateCode_EST_BW_DROP ) {
NSLog(@"bitrate dropping" );
}
}
备注:从v2.0.1版本开始支持该属性
通过KSYStreamerBase类的qosInfo可获取当前缓冲区状态信息。
KSYStreamerQosInfo *info = _kit.streamerBase.qosInfo;
- 缓冲区中待发送的音频数据Size
info->audioBufferDataSize
- 缓冲区中待发送的视频数据Size
info->videoBufferDataSize
- 缓冲区待发送的音频数据时长
info->audioBufferTimeLength
- 缓冲区待发送的视频数据时长
info->videoBufferTimeLength
- 缓冲区待发送的音频包个数
info->audioBufferPackets
- 缓冲区待发送的视频包个数
info->videoBufferPackets
- 从开始推流到现在,总共推送的音频数据Size
info->audioTotalDataSize
- 从开始推流到现在,总共推送的视频数据Size
info->videoTotalDataSize