Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Âm thanh có độ phân giải cao
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Bản phát hành Android 10 bao gồm các điểm cải tiến sau đây cho âm thanh có độ phân giải cao:
- Float: Bộ mã hoá và giải mã WAV, FLAC và trình trích xuất được cập nhật để hỗ trợ float (độ chính xác không tổn hao từ 24 bit trở lên). Hiệu ứng Khử tạp âm và Tạo âm thanh ảo được cập nhật thành float.
MediaPlayer (NuPlayer) cho phép độ chính xác được cập nhật.
- Tần số cao: Bộ mã hoá và giải mã WAV, FLAC cũng như trình trích xuất được cập nhật để hỗ trợ 192 kHz.
Các hiệu ứng mặc định do Android cung cấp được kiểm thử để hỗ trợ 192 kHz ở tần số tiêu chuẩn.
Các tần số tiêu chuẩn được phép là 88,2 kHz, 96 kHz, 176,4 kHz và
192 kHz.
- Đa kênh: Hiệu ứng phát mặc định của Android được kiểm thử để hỗ trợ đa kênh cho 8 kênh.
- Timing (Tốc độ): Thông tin về tốc độ được đưa vào toàn bộ khung âm thanh.
Kể từ Android 9, các điểm cải tiến sau đây không yêu cầu đối tác triển khai:
- Số lượng kênh đầu ra đồng thời của ứng dụng tăng từ 14 lên 40, vì các phiên bản ứng dụng bị giới hạn của
AudioTrack
đã gây ra vấn đề cho các ứng dụng trong Android 8.x.
- Bộ nhớ tối đa của máy khách/máy chủ tăng từ 4 MB lên 32 MB (tuỳ thuộc vào tổng bộ nhớ của thiết bị) để cho phép nhiều kênh âm thanh độ phân giải cao đồng thời hơn.
- Tổng số kênh kết hợp tăng từ 32 lên 256 để ngăn chặn tình trạng tranh chấp tài nguyên giữa các ứng dụng và giao diện người dùng hệ thống.
Thay đổi hiệu ứng đầu ra
Xem phần Hiệu ứng âm thanh để biết các thay đổi đối với bản phát hành Android 11.
Trước bản phát hành Android 9, quá trình xử lý chuỗi hiệu ứng được triển khai ở định dạng mẫu âm thanh nổi int16. Cách này có một số hạn chế:
- Tất cả hiệu ứng đầu ra đều buộc chuyển đổi từ dữ liệu âm thanh dấu phẩy động sang int16, khiến độ chính xác bị giảm.
- Các hiệu ứng đầu ra bị từ chối từ các bồn lưu trữ đầu ra có số lượng kênh lớn hơn 2.
Trong bản phát hành Android 9, quy trình xử lý chuỗi hiệu ứng được nâng cấp để hỗ trợ định dạng float nhiều kênh. Các điểm chính:
- Các hiệu ứng phần mềm Android đã được di chuyển sang float âm thanh nổi.
- Các hiệu ứng cũ được hỗ trợ bằng bộ chuyển đổi định dạng, giúp chuyển đổi float thành int16 nếu cần.
Triển khai hiệu ứng đầu ra
Bạn có thể tham khảo cách triển khai hiệu ứng đầu ra trong frameworks/av/media/libeffects
.
Đối tác triển khai hiệu ứng đầu ra tuỳ chỉnh của riêng họ nên làm như sau đối với bản phát hành Android 10:
- Cập nhật hiệu ứng đầu ra để hỗ trợ định dạng float nhiều kênh:
- Không cần hỗ trợ xử lý Int16 nữa.
- Hỗ trợ số lượng kênh đầu ra từ 2 đến 8 (để tương thích trong tương lai, hãy xem xét số lượng từ 1 đến 30).
- Hỗ trợ số lượng kênh đầu vào khớp với số lượng kênh đầu ra cho các hiệu ứng chèn. Các hiệu ứng phụ vẫn thấy số lượng kênh đầu vào là 1 (đơn âm).
- Hỗ trợ cả mặt nạ vị trí kênh (chính tắc) và mặt nạ chỉ mục kênh của
(1 << n) - 1
.
- Nếu bạn phải tiếp tục hỗ trợ các hiệu ứng đầu ra của nhà cung cấp cũ và không thể cập nhật các hiệu ứng đó, hãy xác minh mã cũ như sau:
- Các hiệu ứng đầu ra (chèn) cũ phải từ chối
các cấu hình không được hỗ trợ trong
EFFECT_CMD_SET_CONFIG
.
- Kiểm tra để đảm bảo định dạng là int16.
- Kiểm tra để đảm bảo mặt nạ kênh đầu vào và đầu ra là âm thanh nổi.
- Nếu một trong hai lần kiểm tra không thành công, hãy trả về
-EINVAL
.
- Các hiệu ứng đầu ra (hỗ trợ) cũ được AudioFlinger định cấu hình bằng mặt nạ kênh đầu vào đơn âm và có thể là mặt nạ kênh đầu ra đa kênh, tuỳ thuộc vào việc bồn lưu trữ đầu ra có phải là đa kênh hay không.
Các trình xử lý này phải từ chối các cấu hình không được hỗ trợ trong
EFFECT_CMD_SET_CONFIG
.
- Kiểm tra để đảm bảo định dạng là int16.
- Kiểm tra để đảm bảo rằng mặt nạ kênh đầu vào là đơn âm và mặt nạ kênh đầu ra là âm thanh nổi.
- Nếu một trong hai lần kiểm tra không thành công, hãy trả về
-EINVAL
.
- Xác minh mã cũ. Đừng tự động cho rằng cách này sẽ hiệu quả!
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# High-resolution audio\n\nThe Android 10 release includes the following\nimprovements for high-resolution audio:\n\n- **Float:** WAV, FLAC codecs, and extractors are updated to support float (24+ bits of lossless precision). Downmix and Virtualizer effects are updated to float. Updated precision is allowed by MediaPlayer (NuPlayer).\n- **High-frequency:** WAV, FLAC codecs, and extractors are updated to support 192 kHz. The default Android supplied effects are tested for 192 kHz support at standard frequencies. The standard frequencies permitted are 88.2 kHz, 96 kHz, 176.4 kHz, and 192 kHz.\n- **Multichannel:** Default Android playback effects are tested for multichannel support to eight channels.\n- **Timing:** Timing information is included throughout the audio framework.\n\nStarting in Android 9, the following improvements\ndon't require any partner implementation:\n\n- The number of simultaneous client output tracks increases from 14 to 40, as limited client instances of `AudioTrack` have been an issue for apps in Android 8.x.\n- Maximum client/server memory increases from 4 MB to 32 MB (depending on total device memory) to allow more simultaneous high-resolution audio tracks.\n- Total mixed tracks increases from 32 to 256 to prevent resource contention between apps and the System UI.\n\nOutput effect changes\n---------------------\n\nSee [Audio\neffects](/docs/core/audio/audio-effects) for Android 11 release changes.\n\nPrior to the Android 9 release, effect chain processing\nwas implemented in stereo int16 sample format. This had several limitations:\n\n- All output effects forced conversion from floating point audio data to int16, causing loss of precision.\n- Output effects were rejected from output sinks with a channel count greater than two.\n\nIn the Android 9 release, the effect chain processing\npipeline is upgraded to support the multichannel float format. Key points:\n\n- Android software effects are already migrated to stereo float.\n- Legacy effects are supported with format adapters, which convert float to int16 as needed.\n\nImplement output effects\n------------------------\n\nA reference implementation for output effects is available under\n`frameworks/av/media/libeffects`.\n\nPartners implementing their own custom output effects should do the\nfollowing for the Android 10 release:\n\n- Update output effects to support the multichannel float format:\n - Int16 processing support is no longer required.\n - Support output channel counts from 2--8 (for future compatibility consider counts from 1--30).\n - Support input channel counts matching output channel counts for insert effects. Auxiliary effects continue to see an input channel count of 1 (mono).\n - Support both channel position masks (canonical) and channel index masks of `(1 \u003c\u003c n) - 1`.\n- If you must continue to support legacy vendor output effects and can't update them, then verify legacy code as follows:\n - Legacy output (insert) effects **must reject** unsupported configurations in `EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input and output channel masks are stereo.\n - If either check fails, return `-EINVAL`.\n - Legacy output (auxiliary) effects are configured by AudioFlinger with a mono input channel mask and potentially multichannel output channel masks, depending on whether the output sink is multichannel. They **must reject** unsupported configurations in `\n EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input channel mask is mono and the output channel mask is stereo.\n - If either check fails, return `-EINVAL`.\n - Verify legacy code. Don't assume that it works!"]]