观看直播或者回放时画面卡顿或者花屏

最近更新时间:2023-08-09 12:01:42

我的收藏

详细描述

在小程序或者 App 端,观看设备的直播时,画面卡顿、不流畅或花屏。

原因分析

卡顿的原因有很多种,需要逐一排除, 其排查方法如下:
将 App 或小程序端收到的音视频流保存在本地,格式一般为 flv;使用第三方播放器(推荐 PotPlayer 或者 VLC)观看本地保存的音视频数据,如果仍然出现卡顿,则是从原因1开始分析,否则从原因2开始。
原因1:这种卡顿一般是因为视频数据有缺失,从本地保存的音视频流中提取出H264/H265裸数据(推荐使用 ffmpeg), 使用 elecard 分析 H264/H265 裸数据, 找到卡顿的时间点, 确认是否有丢帧(可根据 silce header 中的 frame_num 值判断), 一般都是有丢帧的, 丢帧一般都是在设备端引起的。 在设备端查找该时间点发生的音视频数据, 调用iv_avt_send_stream时是否有错误, 或者编码器生成的数据是否有丢帧(可将编码器的 GOP 实时值打印出来判断)。
原因2:这种卡顿一般是网络带宽低于数据码率或者时序有问题引起的, 先判断卡顿点设备端是否有水位报警, 然后使用 flv 分析工具分析数据的时序是否有问题, 如果时序没有问题则需要在设备端做码率控制。

解决方法

如果是设备端带宽原因引起的卡顿,需要做码率自适应。
如果是设备端丢帧导致的,则需要用户检查代码中的丢帧逻辑是否有问题。
如果是读取编码器数据有问题,则需要用户检查业务逻辑中 CPU 是否占用太高或者取数据线程优先级太低。