VisionPro开发问题,iPhone tcpdump抓包来解

一、问题起因

        问题:开发Apple VisionPro应用(以下简称VP),和其他硬件设备建立成功WebRTC连接后,VP视频流没有渲染出来

        排查:硬件设备端tcpdump数据,上行数据成功,并有推送给VP对应的IP地址。那要么数据在传输过程中丢了?要么VP接收到数据但没有解码成功?  

        由于VP无法直接tcpdump数据(需要借助电脑侧虚拟网口,但连接不了电脑),VP版本WebRTC SDK上层也没有输出视频帧数据(如果解码成功,会输出日志),没有数据也没有办法确认是否接收到?  所以重新一个iPhone App,借助其与硬件设备进行WebRTC连接,排查数据流是否有收到以及渲染是否成功

二、tcpdump 基本使用

 1、M系列Mac 自带安装有tcpdump,可以tcpdump ---version查看相应版本

uicloud@uiclouddeMacBook-Pro ~ % tcpdump --version
tcpdump version 4.99.4
libpcap version 1.10.4
OpenSSL 3.3.1 4 Jun 2024

2、tcpdump 在 macOS 上监听特定网口中的某个主机的流量,基本步骤操作:

1)确认网口名称

        首先,你需要确定要监听的网口名称。可以使用以下命令来列出所有网口:

ifconfig

        网口名称通常是类似 en0en1eth0 等的名称。

2)使用 tcpdump 进行监听

        假设你要监听的网口是 en0,并且目标主机的 IP 地址是 192.168.1.10,你可以使用以下命令:

sudo tcpdump -i en0 host 192.168.1.10

这条命令的含义是:

  • sudo:以超级用户权限运行 tcpdump
  • -i en0:指定监听的网口。
  • host 192.168.1.10:过滤条件,只捕获与 192.168.1.10 相关的流量。

3)附加过滤条件(可选)

        如果你只对特定的协议或端口感兴趣,可以在 tcpdump 命令中加入更多过滤条件。例如,监听目标主机的 HTTP 流量(端口 80)

sudo tcpdump -i en0 host 192.168.1.10 and port 80

        使用 tcpdump 的 ip 过滤器来捕获仅 IPv4 流量。例如,如果你希望监听网口 en0 上的所有 IPv4 流量,可以使用:

sudo tcpdump -i en0 ip

        如果你已经在捕获流量但发现有 IPv6 流量,你可以在过滤条件中加入 not ip6 来排除 IPv6 流量:

sudo tcpdump -i en0 not ip6

4)保存到文件(可选)

如果你希望将捕获的数据保存到文件中以供后续分析,可以使用 -w 选项:

sudo tcpdump -i en0 host 192.168.1.10 -w output.pcap

三、iOS tcpdump抓包/流量分析

1、iPhone USB连接电脑

2、通过Xcode查看手机的uuid

3、打开Mac终端,创建虚拟网口( rvictl -s uuid)

uicloud@uiclouddeMacBook-Pro ~ % rvictl -s 00008030-00121140113xxxxx

Starting device 00008030-00121140113xxxxx [SUCCEEDED] with interface rvi0

4、开启抓包

5、结束转包,删除网口(rvictl -x uuid)

$ rvictl -x 00008030-00121140113xxxxx

四、问题发现

        通过抓包iPhone App,仍然没有渲染出视频流。但是抓包发现有接收到视频流数据,只是WebRTC SDK 没有成功吐出视频帧数据给上层接口。

20:58:08.483584 IP 192.168.83.167.46522 > 192.168.83.153.54623: UDP, length 76
20:58:08.483597 IP 192.168.83.167.46522 > 192.168.83.153.54623: UDP, length 76
tcpdump: pcap_loop: The interface disappeared
90 packets captured

        然后查看Xcode,发现很明显的fail decode frame, 和硬件设备视频编码格式不匹配。

        至此,曲线救国的方式,排查出VP可能存在同样问题,匹配并对应好视频编解码格式,即可正常渲染。

附:

Record and Analyze a Packet Trace on a Mac   Recording a Packet Trace | Apple Developer Documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值