简介
移动直播TXLiteAVSDK有两个基本组件
- TXLivePusher 上行推流
- TXLivePlayer 下行拉流
您可以为 LivePusher 对象绑定一个TXLivePushListener,之后 SDK 的内部推流状态信息均会通过 onPushEvent(事件通知) 和 onNetStatus(状态反馈)通知给您
为TXLivePlayer 对象绑定一个TXLivePlayListener,之后 SDK 的内部播放状态信息均会通过 onPlayEvent(事件通知) 和 onNetStatus(状态反馈)通知给您
状态监控
TXLiteAVSDK通过TXLivePushListener和TXLivePlayListener的onNetStatus 回调,会每隔 1-2 秒将 SDK 内部的状态指标同步出来。例如,移动直播的Demo根据这个回调显示的仪表盘:
问题定位
TXLivePushListener
1. 判断推流质量:
指标 | 说明 |
---|---|
VRA ARA = SPD | 说明推流质量好 |
VRA ARA > SPD | 说明推流质量不佳,并且这种情况的持续时间比较长,音视频数据会堆积在主播的手机上并最终被 SDK 丢弃 |
2. 卡顿问题:
指标 | 说明 |
---|---|
系统CPU使用率超过80% | 音视频编码的稳定性会受到影响,可能导致画面和声音的随机卡顿 |
系统CPU使用率经常100% | 会导致视频编码帧率不足,音频编码跟不上,必然导致画面和声音的严重卡顿 |
FPS <= 10 | 视频帧率低于10帧会导致播放端明显卡顿 |
TXLivePlayListener
QUE参数数值 | 参数名 | 单位 | 含义 | 计算方式 | 备注 |
---|---|---|---|---|---|
1834 | audio_cache | ms | 音频缓冲时长 | ||
1880 | video_cache_ts | ms | 视频缓冲时长 | 最新接收的视频帧pts - 当前正在渲染的视频帧pts | |
47 | video_cache_cnt | 帧数 | videojitterbuff缓冲总帧数 | videojitterbuffer本身list的缓冲帧数 视频解码器缓冲帧数 | video_cache_cnt / fps * 1000 可转换成缓冲时长 |
4 | video_dec_cache_cnt | 帧数 | 视频解码器缓冲帧数 | ||
-52 | av_recv_interval | ms | 音视频当前网络收帧时间差 | 当前最新接收的音频帧pts - 当前最新接收的视频帧pts | 标示当前的网络收帧同步状态 |
-47 | av_render_interval | ms | 音视频当前帧渲染时间差 | 当前正在播放的音频帧pts - 当前正在渲染的视频帧pts | 标示当前播放音画同步的状态 |
5.0 | balance_point | ms | 平衡点 |
1. 音画不同步问题:
指标 | 说明 |
---|---|
audio_cache 约等于 video_cache_ts 约等于( 视频缓存总帧数 / fps * 1000 ) | 三者相互之间的差值超过500ms会导致音画不同步 |
av_recv_interval > 500ms | 说明引起音画不同步的原因可能是网络收帧的时候就已经不同步,可能的原因是推流的时候已经音画不同步了 |
av_render_interval > 500ms | 说明引起音画不同步的原因可能是SDK播放器的同步策略有问题 |
2. 播放回声问题:
指标 | 说明 |
---|---|
0 | 表示没开启回声消除 |
1 | 表示使用系统aec |
2 | 表示使用trae |
一般回声问题是没开启回声消除导致的。
3. 卡顿问题:
FPS视频帧率低于10帧,当前视频就会明显看到卡顿现象了。
原理参考
1.更多细节参考文档:sdk指标监控