Skip to content
Salvia Hotel Salvia Hotel Val d'Orcia · Since 2007

Tại sao phát trực tiếp thường có độ trễ khác video đã tải xong?

Salvia Hotel
Tóm tắt

Phát trực tiếp và video đã tải xong khác nhau ngay từ bản chất dữ liệu, một bên là luồng đang được tạo ra từng giây trong khi một bên là tệp đã có đủ dữ liệu để phát ngay. Vì luồng trực tiếp cần thời gian mã hóa, đóng gói, truyền tải và đệm ở phía người xem nên khoảng cách giữa điểm quay và màn hình là điều tất yếu của kiến trúc, không phải lỗi của riêng thiết bị nào. Hiểu khác biệt khái niệm này giúp người xem đặt kỳ vọng đúng và ngừng so sánh hai loại hình bằng cùng một thước đo.

Điểm chínhLuồng trực tiếp được tạo theo thời gian thực nên người xem luôn đi sau điểm quay một khoảng đệm kỹ thuật. · Video đã tải xong có sẵn dữ liệu nên trình phát chủ động hơn trong việc đệm trước và tua lại mượt mà. · Chuỗi trực tiếp gồm thu hình, mã hóa, đóng gói, phân phối và đệm, mỗi chặng cộng thêm một phần độ trễ. · Bộ đệm giúp phát mượt khi mạng chập chờn nhưng đồng thời kéo giãn khoảng cách với thời gian thực. · Không nên lấy độ trễ khái niệm trong tài liệu kỹ thuật để khẳng định con số của một dịch vụ cụ thể.

Luồng đang được tạo khác tệp đã có sẵn

Tài liệu về phân phối âm thanh và hình ảnh trên web phân biệt rõ nội dung được tạo dần theo thời gian với nội dung đã hoàn chỉnh trước khi phát. Với luồng trực tiếp, máy chủ chỉ có thể gửi những gì vừa được tạo ra, còn trình phát chỉ có thể phát những gì vừa nhận được, nên toàn bộ chuỗi luôn chạy đuổi theo thời gian thực từ phía sau. [1] Khoảng đuổi theo này không thể triệt tiêu hoàn toàn vì mỗi chặng xử lý đều cần một lượng thời gian hữu hạn.

Illustration: Luồng đang được tạo khác tệp đã có Decorative illustration for the section "Luồng đang được tạo khác tệp đã có"; visual only, carries no data.

Ngược lại, video đã tải xong tồn tại dưới dạng dữ liệu hoàn chỉnh trên máy chủ hoặc mạng phân phối, cho phép trình phát tải trước một đoạn dài và chủ động xử lý khi mạng chập chờn. Người xem có thể tua đi tua lại tùy ý vì dữ liệu của cả quá khứ lẫn tương lai trong video đều đã sẵn sàng. Khác biệt về mức sẵn sàng của dữ liệu là gốc rễ khiến hai loại hình có độ trễ và trải nghiệm điều khiển hoàn toàn khác nhau.

Các chặng cộng dồn trong chuỗi trực tiếp

Một luồng trực tiếp đi qua chuỗi thu hình tại nguồn, mã hóa thành định dạng số, chia nhỏ thành các đoạn, đẩy lên máy chủ, phân phối qua mạng, rồi đệm và giải mã ở thiết bị người xem. Mỗi chặng cần thời gian xử lý và thường giữ lại một chút dữ liệu dự phòng để chống giật, nên tổng độ trễ là phép cộng của toàn bộ chuỗi chứ không nằm ở một khâu duy nhất. Tối ưu một khâu chỉ giảm được phần của khâu đó, không thể xóa cả chuỗi.

Thiết kế của nhà cung cấp còn cố ý đánh đổi giữa mượt mà và bám sát thời gian thực, khi bộ đệm lớn giúp vượt qua lúc mạng yếu nhưng khiến người xem đi sau xa hơn. Ngược lại, bộ đệm quá nhỏ giúp bám sát hơn nhưng dễ khựng mỗi khi tốc độ mạng tụt. Vì vậy cùng một công nghệ nền, hai dịch vụ chọn chiến lược đệm khác nhau sẽ cho cảm nhận độ trễ khác nhau, và người xem nên đọc lựa chọn thiết kế này thay vì cho rằng thiết bị của mình có vấn đề.

Vai trò của bộ đệm ở phía người xem

Bộ đệm là đoạn dữ liệu trình phát giữ sẵn để có cái mà phát trong lúc chờ gói tiếp theo tới, giống như một hồ chứa nhỏ điều hòa dòng chảy thất thường của mạng. Khi mạng ổn định, hồ chứa luôn đầy và video phát mượt, còn khi mạng chập chờn, trình phát rút dần hồ chứa thay vì dừng hình ngay. Cơ chế này cứu trải nghiệm khỏi hàng loạt lần khựng, nhưng cái giá là màn hình luôn hiển thị nội dung của vài giây trước chứ không phải hiện tại tuyệt đối.

Illustration: Vai trò của bộ đệm ở phía người Decorative illustration for the section "Vai trò của bộ đệm ở phía người"; visual only, carries no data.

Giao diện Media Source Extensions cho phép trang web điều khiển chi tiết cách đưa dữ liệu media vào trình phát, từ đó triển khai các chiến lược đệm và chuyển chất lượng khác nhau. [2] Hiểu được lớp điều khiển này giúp người xem nhận ra độ trễ mình thấy là kết quả của cả một chồng quyết định kỹ thuật, từ máy chủ tới trình duyệt, chứ không phải một con số cố định do một bên duy nhất gây ra.

Vì sao so sánh trực tiếp hai loại hình dễ gây hiểu lầm

Nhiều người quen với cảm giác bấm phát là chạy ngay của video đã tải xong rồi mang kỳ vọng đó sang luồng trực tiếp, nên thấy chậm vài giây đã cho là lỗi. Thực ra hai loại hình trả lời hai câu hỏi khác nhau, một bên hỏi kho dữ liệu có sẵn gì và một bên hỏi nguồn đang tạo tới đâu. Đặt cùng một thước đo tức thì lên cả hai là so sánh khập khiễng ngay từ đầu, giống như đòi một buổi diễn trực tiếp phải tua lại được như băng ghi hình.

Cách đặt kỳ vọng đúng là chấp nhận luồng trực tiếp luôn có khoảng cách với thời gian thực và dùng nó cho nhu cầu theo dõi diễn biến, còn khi cần xem lại chi tiết thì chờ bản ghi hoàn chỉnh sau sự kiện. Khi đã tách bạch nhu cầu, người xem sẽ ngừng bực bội với vài giây chênh lệch và tập trung vào chất lượng hình ảnh, âm thanh cùng sự ổn định của luồng. Trong lúc chờ bản ghi hoàn chỉnh của một giải đấu, bạn có thể mở lịch các sự kiện thể thao tại KLIVE để theo dõi các nội dung thể thao trực tiếp khác; trang này là nội dung thể thao trực tiếp, không phải tài liệu đo độ trễ của luồng.

Đọc tài liệu kỹ thuật mà không suy ra con số dịch vụ

Tài liệu kỹ thuật web mô tả khái niệm, kiến trúc và giao diện điều khiển ở mức tổng quát để nhà phát triển áp dụng cho nhiều hệ thống khác nhau. Những con số minh họa trong tài liệu, nếu có, chỉ phục vụ mục đích giảng giải chứ không phải cam kết hiệu năng của bất kỳ dịch vụ thương mại nào. Người đọc nên giữ tài liệu ở vai trò khung hiểu biết, rồi tìm số liệu vận hành thực tế từ chính nhà cung cấp dịch vụ mình đang dùng.

Thói quen tốt là khi trích dẫn tài liệu thì nêu rõ đây là giải thích khái niệm và dẫn đường dẫn gốc để người khác đối chiếu. Không nên ghép một câu mô tả kiến trúc chung với tên một dịch vụ cụ thể rồi công bố đó là độ trễ chính thức của dịch vụ ấy. Giữ đúng ranh giới giữa kiến thức nền và số liệu vận hành vừa tránh lan truyền thông tin sai, vừa giúp bài viết của mình đứng vững khi bị kiểm chứng.

Nguồn tham khảo

  1. MDN — Audio and video delivery
  2. MDN — Media Source Extensions API

Câu hỏi thường gặp

Vì sao luồng trực tiếp không thể nhanh như video đã tải xong?

Vì luồng trực tiếp là dữ liệu đang được tạo từng giây, phải đi qua mã hóa, đóng gói, phân phối và đệm trước khi hiển thị, nên màn hình luôn đi sau điểm quay. Video đã tải xong có sẵn toàn bộ dữ liệu nên trình phát tải trước và điều khiển linh hoạt hơn nhiều.

Bộ đệm giúp gì và đánh đổi điều gì?

Bộ đệm giữ sẵn một đoạn dữ liệu để video không khựng khi mạng chập chờn, giống như hồ chứa điều hòa dòng chảy. Cái giá là màn hình hiển thị nội dung của vài giây trước chứ không phải hiện tại tuyệt đối, và bộ đệm càng lớn thì khoảng cách với thời gian thực càng giãn ra.

Mạng nhà tôi nhanh mà luồng vẫn chậm vài giây thì có phải lỗi không?

Chưa chắc. Khoảng chậm vài giây là hệ quả kiến trúc của cả chuỗi tạo và phân phối luồng, không chỉ phụ thuộc tốc độ mạng nhà bạn. Chỉ khi luồng liên tục khựng, vỡ hình hay mất tiếng thì mới nên kiểm tra thiết bị, trình duyệt và kết nối theo từng bước.

Có nên lấy số trong tài liệu kỹ thuật làm độ trễ của một dịch vụ cụ thể?

Không. Tài liệu kỹ thuật trình bày khái niệm và kiến trúc chung cho nhiều hệ thống, không phải cam kết hiệu năng của dịch vụ thương mại nào. Muốn biết số vận hành thực tế, phải tìm công bố của chính nhà cung cấp dịch vụ đó trong đúng thời điểm.

Written from the farmhouse kitchen, with espresso. — admin for Salvia Hotel