DEV Community

Devin
Devin

Posted on

Vì sao chia sẻ màn hình vẫn giật dù mất gói 0%?

Chúng tôi đo một phiên chia sẻ màn hình trên macOS: độ phân giải 3024x1964, H.264 qua VideoToolbox, fps trung vị 29, thời gian encode 12.3 ms, dropped=0 ở phía chia sẻ.

Mạng thì hoàn hảo: RTT 0–1 ms, mất gói 0%.

Nhưng ở phía người xem, freezes vẫn cộng dồn tới 35 lần, có đoạn 2 giây chỉ còn 3 fps.

Kết luận đầu tiên: nút thắt không nằm ở mạng.

Vì sao

Ba thứ thường bị bỏ qua khi đo:

  1. Encode không phải nguyên nhân. 12.3 ms/frame trên ngân sách 33 ms ở 30 fps — mới dùng 37%.
  2. Adaptive quality không hề kích hoạt. 501/501 mẫu đều limit=none, tức engine chưa từng giảm chất lượng dù fps rơi xuống 3.
  3. Thứ tự giảm chất lượng bị ngược. Với screen sharing, WebRTC xu hướng giữ nguyên độ phân giải và hy sinh frame rate. Kết quả: hình vẫn nét nhưng bị giật.

Nên làm gì

  • Đặt degradationPreference tường minh, đừng để mặc định.
  • Tự dựng thang độ phân giải (100% → 66% → 50%) và hạ độ phân giải trước khi fps xuống dưới 15.
  • Giới hạn độ phân giải ngay ở capture. Khung 3024x1964 là ~5.9 megapixel; hạ về 1920x1200 giảm 4 lần khối lượng.
  • Ghi log riêng dropped, freezes, thời gian decode — không có thì chỉ đoán.

Công cụ miễn phí

Mình làm một máy tính ngân sách latency/bandwidth cho chia sẻ màn hình:

https://hhfa008.github.io/tools/screen-share-calc/vi/

Bộ checklist 18 điểm + script đo đầy đủ (bản trả phí): https://devinspire734.gumroad.com/l/xejxsp/FIRST50

Top comments (0)