Pages

Saturday, February 23, 2019

Tổng quan về hệ thống live video streaming (Phần 2)


Trễ trong hệ thống live streaming

Như đã phân tích trong phần 1, video sau khi thu phải trải qua các công đoạn nén (encoding), truyền (transmission), giải nén (decoding) trước khi được hiển thị lên màn hình của người dùng.  Thời gian cần để xử lý mỗi công đoạn trên gây ra trễ (delay) giữa thời gian thực tế của sự kiện và thời gian người dùng xem sự kiện. Các thành phần trễ chính trong hệ thống live streaming được chỉ ra trong hình trên. Ở đây, trễ được tính từ lúc một ảnh được đưa vào Encoder cho đến khi ảnh đó ra khỏi Decoder.

  1. Encoding delay: Đây là thời gian Encoder cần để nén một ảnh của video. Các Encoder sẽ có các lựa chọn về thời gian nén cho các ứng dụng khác nhau. Với cùng một mức chất lượng đầu ra, thời gian nén càng nhanh sẽ làm cho hiệu suất nén giảm và ngược lại. Thời gian thực tế để nén một ảnh phụ thuộc vào nhiều yếu tố, ví dụ như encoder được cài đặt trên phần mềm (software-based encoder) hay phần cứng (harward-based encoder), kích thước của ảnh, chất lượng đầu ra của ảnh. Các encoders nhanh nhất hiện nay có thể nén một ảnh dưới 1 mili giây.  
  2. Packetization delay: Như đã phân tích trong phần 1, việc truyền dữ liệu từ bên gửi đến bên nhận được thực hiện thông qua các giao thức streaming (streaming protocols). Bạn có thể xem các giao thức này như các công ty vận chuyển hàng hóa. Để có thể chuyển hàng đến đúng người nhận thì sau khi nhận hàng, các công ty này sẽ phải đóng gói, thêm địa chỉ người nhận/gửi rồi mới gửi đi. Công việc của các streaming ptococols cũng tương tự như vậy. Và việc đóng gói (Packetization) gây ra trễ trong hệ thống. Thời gian cho việc đóng gói này có thể chỉ vài mili giây (RTP, RTMP) nhưng cũng có thể lên đến vài giây (MPEG-DASH, HLS). 
  3. Transmission delay: Đây là thời gian để chuyển dữ liệu từ bên gửi đến bên nhận. Cũng tương tự như việc vận chuyển hàng hóa. Thời gian chuyền dữ liệu phụ thuộc vào 1) khoảng cách giữa bên gửi và bên nhận, 2) tốc độ của đường truyền, 3) đặc tính của giao thức truyền.
  4. Client buffering delay: Khi bạn bắt đầu nhấn nút play, các ảnh trong video được giải nén và hiện thị lên màn hình với tốc độ không đổi bằng frame rate của video. Do vậy, nếu một ảnh không đến được phía nhận trước thời gian nó phải được hiện thị, quá trình hiển thị video sẽ bị chậm, gây ra hiện tượng giật lag khi xem. Do mạng Internet không đảm bảo một băng thông cố định, thời gian truyền mỗi ảnh sẽ rất biến động. Do vậy, khả năng cao là người xem sẽ phải chứng kiến rất nhiều hiện tượng giật lag nếu việc hiển thị video được thực hiện ngay sau khi ảnh đầu tiên của video đến. Để xử lý vấn đề này, bên nhận sẽ không bắt đầu quá trình hiện thị video ngay khi ảnh đầu tiên đến, mà thay vào đó đợi cho đến khi một số lượng ảnh nhất định đã được nhận thì mới bắt đầu. Thời gian này gọi là "client buffering delay". Thời gian này có thể từ vài trăm mili giây đến vài giây, phụ thuộc vào từng hệ thống.
Các hệ thống live streaming có nhiều yêu cầu khác nhau về thời gian trễ.
  1. 1s-5s: Các ứng dụng như trực tiếp các sự kiện thể thao, tin tức yêu cầu trễ từ 1-5 giây. Điều này để đảm bảo rằng tín hiệu nhận được không bị chậm hơn tín hiệu trên tivi. Trung bình trễ trong các hệ thống truyền hình cáp là 5-6 giây. Với các dịch vụ OTT, đây sẽ là mục tiêu chính để có thể tiến tới thay thế hoàn toàn tivi.  
  2. 200ms-1s: Mức trễ này là yêu cầu đối với các ứng dụng như cá cược/đấu giá trực tuyến, camera giám sát.
  3. < 200ms: Các hệ thống tương tác như video call, cloud gaming, hay telepresence yêu cầu mức trễ này để có thể đảm bảo được chất lượng dịch vụ. Các hệ thống video call tốt nhất hiện nay (Google Hangout, Skype) có trễ gần với mức này. Các ứng dụng như cloud gaming hay telepresence yêu cầu trễ phải dưới 100ms. Các công nghệ, kỹ thuật mới là rất cần thiết để có thể đảm bảo được mức trễ này. 





No comments:

Post a Comment

Năm 2022 nhìn lại

Một năm bận rộn cũng sắp kết thúc. Để bố kể cho Sóc nghe về năm nay của nhà mình nhé. Nửa đầu năm là thời gian mà cả bố mẹ đều lao đầu vào c...