Tôi hiện đang cố gắng để giảm thiểu độ trễ âm thanh cho một ứng dụng đơn giản:phát lại âm thanh thấp độ trễ trên Android
Tôi có một đoạn video trên PC, và tôi đang truyền âm thanh của video qua RTP với một khách hàng điện thoại di động . Với một thuật toán đệm tương tự, tôi có thể đạt được 90ms độ trễ trên iOS, nhưng đáng sợ là ± 180ms trên Android.
Tôi đoán sự khác biệt bắt nguồn từ độ trễ well-known độ trễ issues trên Android.
Tuy nhiên, sau khi đọc xung quanh một chút, I came upon this article, trong đó nêu rằng:
thấp độ trễ âm thanh có sẵn kể từ Android 4.1/4.2 trong các thiết bị nhất định.
Âm thanh có độ trễ thấp có thể đạt được bằng cách sử dụng libpd, which is Pure Data library for Android.
Tôi đã 2 câu hỏi, liên quan trực tiếp đến những 2 báo cáo:
Tôi có thể tìm thêm thông tin về âm thanh có độ trễ thấp mới trong Jellybean ở đâu? This is all I can find but it's sorely lacking in specific information. Các thay đổi có nên minh bạch với tôi hay có một số cuộc gọi API/lớp học mới mà tôi nên triển khai để tôi có thể nhận thấy bất kỳ thay đổi nào trong đơn đăng ký của mình không? Tôi đang sử dụng API AudioTrack và tôi thậm chí không chắc liệu nó có thu được lợi ích từ cải tiến này hay không hoặc liệu tôi có nên xem xét một số cơ chế khác để phát lại âm thanh hay không.
Tôi có nên xem xét sử dụng libpd không? Có vẻ như tôi là cơ hội duy nhất để đạt được độ trễ thấp hơn, nhưng vì tôi luôn nghĩ PD là một tiện ích tổng hợp âm thanh, nó thực sự phù hợp cho một dự án chỉ lấy khung từ một luồng mạng và phát lại chúng ? Tôi không thực sự làm bất kỳ tổng hợp nào. Tôi có đi theo đường mòn sai không?
Là một lưu ý bổ sung, trước khi ai đó đề cập OpenSL ES, this article makes it quite clear that no improvements in latency should be expected from using it:
"Như OpenSL ES là một C API bản xứ,-Dalvik không áp dụng chủ đề mà OpenSL gọi ES không có Dalvik Tuy nhiên, không có lợi ích hiệu suất bổ sung cho việc sử dụng OpenSL ES ngoài điều này.Đặc biệt, việc sử dụng OpenSL ES không dẫn đến độ trễ âm thanh thấp hơn, ưu tiên lên lịch cao hơn,.210, vv so với những gì nền tảng này thường cung cấp "
Tôi là một thành viên của nhóm Android và tôi làm việc chặt chẽ với các tác giả của bài viết bạn trích dẫn. Đoạn bạn trích dẫn không còn đúng nữa. Khi bài viết được viết, các bộ đệm nhỏ nhất có sẵn cho OpenSL vẫn còn khá lớn. Bây giờ kích thước bộ đệm đã được giảm trong Jellybean, độ trễ đã giảm xuống đến điểm mà "chi phí liên quan đến Dalvik như thu gom rác tạm dừng" là một sự cân nhắc rất quan trọng. Cách duy nhất để tận dụng lợi thế của các bộ đệm Jellybean nhỏ hơn là sử dụng OpenSL. –