我正在调试 Android 上的 RTC 视频卡顿问题,我尝试了多种不同的设备。为了简化问题,我只是从 MAC 以大约 10 毫秒的间隔发送 udp 数据包,并在具有良好 wifi 的 Android 上接收它们。我几乎每分钟都能看到很大的抖动(大于 200 毫秒),有时会大于 600 毫秒。特别是当我打开和关闭任务管理器时。不与 localhost 测试重复。这可以解决吗?
while(1) {
int s = recvfrom(socket_fd, buffer, sizeof(buffer), 0, (struct sockaddr *)&recv_addr, (socklen_t *)&addr_len);
if (s > 0) {
struct timeval tv_ioctl;
tv_ioctl.tv_sec = 0;
tv_ioctl.tv_usec = 0;
int error = ioctl(socket_fd, SIOCGSTAMP, &tv_ioctl);
if (error == 0) {
int64_t ms = tv_ioctl.tv_sec * 1000LL + tv_ioctl.tv_usec/1000;
if (pre_rev_ms == 0) {
pre_rev_ms = ms;
}
if (ms - pre_rev_ms > 200) {
LOGV("Udp glitches\n");
}
pre_rev_ms = ms;
}
}
}