花屏问题,一般是下面的3种原因:
1.source端录屏有问题。
2.传输的Wi-Fi通道存在问题。
3.sink端解码存在问题。

可以通过以下几种case测试验证:

1.在屏蔽房或者地下室WiFi干扰小的地方测试,排除信号干扰的原因,判断到底是不是WiFi传输的问题。

2.问题复现时,sink端和source端是否在用蓝牙,蓝牙对WiFi有干扰作用,共存做的不好的话,干扰较大,测试时可以把蓝牙关闭。

3.sink端用本地视频测试,排除网络因素的干扰。

4.测试过程中是否在横竖屏不停的切换,这种场景下出现比较频繁,这种场景是否影响系统性能,从而影响录屏。

针对与source端录屏有问题,可以按照如下进行确认,

1.抓取source端的tcpdump数据,解码为RTP流,解析为视频,播放查看是否已经花屏,同时观察是否存在丢包和错序。

2.如果无法抓取source端的tcpdump数据,建议使用source与支持投频的电视或者各种盒子进行对比测试,观察现象。

针对传输的Wi-Fi通道存在问题。

1.在屏蔽房或者地下室WiFi干扰小的地方测试,排除信号干扰的原因,判断到底是不是WiFi传输的问题。

2.通过抓取空中包,分析空中包的丢包重传率,判断是否是WiFi传输出现的问题。

3.如果传输过程出现严重丢包问题,建议通过iperf,在miracast建立连接的情况下,测试下两个设备件的吞吐率,看下是否是性能不达标导致。

针对sink端解码存在问题,可以按照如下进行确认,

1.sink端用本地视频测试,排除网络因素的干扰。

2.抓取sink端的tcpdump数据,解码为RTP流,解析为视频,播放查看是否已经花屏,同时观察是否存在丢包和错序。

下面介绍下WireShark如何过滤tcpdump RTP数据流并解析为视频,

1.抓取tcpdump数据

adb shell tcpdump -i any -s 0 -w /data/tcpdump.pcap

2.筛选dup数据

android glsurface 花屏 安卓大屏花屏_重传

3.解码为RTP流

android glsurface 花屏 安卓大屏花屏_重传_02

 

android glsurface 花屏 安卓大屏花屏_数据_03

4.RTP流数据分析并保存为视频

android glsurface 花屏 安卓大屏花屏_android_04

android glsurface 花屏 安卓大屏花屏_android_05

可以看到丢包率、错序数。

android glsurface 花屏 安卓大屏花屏_丢包_06

点击保存为原始视频数据,使用播放器进行播放。

android glsurface 花屏 安卓大屏花屏_wifi_07

下面介绍下WireShark如何分析空中包,查看丢包重传数据,

可以右击将该是否是重传数据添加到列进行显示,如添加后的Retry列,方便观察。

android glsurface 花屏 安卓大屏花屏_数据_08