Tôi nên triển khai loại bộ đệm nào cho thiết bị âm thanh phát trực tiếp một chiều?


8

Tôi đang làm việc trong một dự án nơi dữ liệu âm thanh được truyền đến thiết bị. Dữ liệu âm thanh được mã hóa thông qua opus và được truyền phát với tải trọng 20 ms mỗi lần. Việc truyền phát được thực hiện thông qua TCP để tránh mất gói hoàn toàn. Mục tiêu của phát trực tuyến là có càng gần càng tốt để truyền phát âm thanh trực tiếp, không bị mất âm thanh hoặc bị giật.

Hiện tại những gì xảy ra trên các kết nối Internet chậm hơn, âm thanh có thể bị nhiễu một chút. Tôi hiện không sử dụng bất kỳ bộ đệm nào, nhưng mục tiêu là có thể có khả năng "phát trực tiếp" gần nhất có thể nhưng đồng thời loại bỏ được jitter.

Tôi đã xem xét bộ đệm jitter và có vẻ như bộ đệm jitter cũng có nghĩa vụ xử lý độ trễ ở cả hai đầu để cả hai đầu càng đồng bộ càng tốt, nghe có vẻ quá mức cho tình huống của tôi. Tôi sợ rằng nếu tôi tạo kích thước bộ đệm tĩnh, nó sẽ mất đi khía cạnh phát trực tiếp nếu điều này không cần thiết.

Vì vậy, điều này để lại cho tôi một vài câu hỏi, tất cả đều liên quan đến nhau.

  1. Một phương pháp hay thuật toán tốt để phát hiện chiều dài bộ đệm là gì?
  2. Cách tốt nhất để bắt đầu cung cấp dữ liệu cho bộ giải mã ở đầu thu? Có phải khi bộ đệm đạt đến một lượng mili giây nhất định, nó sẽ bắt đầu cung cấp dữ liệu trong tải trọng 20 ms?
  3. Tôi có trì hoãn phát nếu bộ đệm bị thiếu không?
  4. Bộ đệm sẽ được tính bằng byte hoặc thời gian?

Cám ơn rất nhiều!


1
Làm thế nào sống nó phải được, thực sự? Ngay cả khi bạn có bộ đệm 10 giây, có ai để ý không? Một số chương trình truyền hình trực tiếp bị trì hoãn gần như lâu vì lý do kiểm soát nội dung (tức là thô tục).
Robert Harvey

1
"Việc truyền phát được thực hiện thông qua TCP để tránh mất gói hoàn toàn." - TCP không tránh mất gói, nó hoạt động xung quanh việc mất gói.
dùng253751

Câu trả lời:


1

Điều đó hoàn toàn phụ thuộc vào thông lượng của mạng của bạn - nếu bạn có thể giữ một giây dữ liệu được lấp đầy thì đó là tất cả những gì bạn cần! Rõ ràng, bạn cần xác định khoảng thời gian mạng của bạn sẽ bị gián đoạn và bỏ lỡ việc lấp đầy bộ đệm. Kiểm tra nó và xem.

Mặt khác, có thể dễ dàng hơn trong việc định cấu hình kích thước bộ đệm, các mạng nhanh có thể có bộ đệm thứ hai (không ai nhận thấy âm thanh chậm hơn 1 giây) và mạng chậm thông lượng cao hoặc chậm có thể đệm nhiều hơn. Bạn có thể thay đổi kích thước bộ đệm trong khi phát lại nếu nó hoàn toàn trống, nhưng nhiều khả năng bạn sẽ không bị trì hoãn phát lại liên tục trong trường hợp này.

Nói chung, bạn chỉ trì hoãn chơi nếu bộ đệm trống hoàn toàn. Không có điểm nào có bộ đệm nếu bạn không sử dụng nó.

Nếu âm thanh của bạn là gói 20ms, thì kích thước == thời gian.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.