1

我正在调试 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;
        }
    }
}
4

0 回答 0