花屏问题,一般是下面的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数据
3.解码为RTP流
4.RTP流数据分析并保存为视频
可以看到丢包率、错序数。
点击保存为原始视频数据,使用播放器进行播放。
下面介绍下WireShark如何分析空中包,查看丢包重传数据,
可以右击将该是否是重传数据添加到列进行显示,如添加后的Retry列,方便观察。