Xin chào, tôi đang làm việc trên API WebAudio. Tôi đọc liên kết HTML5 Web Audio API, porting from javax.sound and getting distortion nhưng không nhận được chất lượng tốt như trong java API.I đang nhận dữ liệu PCM từ máy chủ trong các byte đã ký. Sau đó, tôi phải thay đổi điều này thành định dạng 16 bit. để thay đổi tôi đang sử dụng (firstbyte < < 8 | secondbyte) nhưng tôi không thể có được chất lượng âm thanh tốt. có bất kỳ vấn đề nào trong chuyển đổi hay bất kỳ cách nào khác để làm cho việc có được chất lượng âm thanh tốt không?phát dữ liệu pcm bằng webAudio API
7
A
Trả lời
4
API âm thanh web sử dụng các ký hiệu nổi 32 bit từ -1 đến 1, vì vậy đó là những gì tôi sẽ (hy vọng) cho bạn biết cách thực hiện, thay vì 16 bit như bạn đã đề cập trong câu hỏi.
Giả sử mảng của bạn các mẫu được gọi là samples
và được lưu trữ như lời khen 2 từ -128 đến 127, tôi nghĩ rằng điều này sẽ làm việc:
var floats = new Float32Array(samples.length);
samples.forEach(function(sample, i) {
floats[i] = sample < 0 ? sample/0x80 : sample/0x7F;
});
Sau đó, bạn có thể làm một cái gì đó như thế này:
var ac = new webkitAudioContext()
, ab = ac.createBuffer(1, floats.length, ac.sampleRate)
, bs = ac.createBufferSource();
ab.getChannelData(0).set(floats);
bs.buffer = ab;
bs.connect(ac.destination);
bs.start(0);
+0
Tôi nghĩ bạn đang bỏ lỡ "bs.buffer = ab;" – CpnCrunch
Các vấn đề liên quan
- 1. Tỷ lệ lấy mẫu API WebAudio
- 2. Xác định 'chunk mp3 hợp lệ' cho decodeAudioData (API WebAudio)
- 3. WebAudio không phát sau khi dừng (0)
- 4. Tạo tệp WAV từ dữ liệu PCM thô bằng SDK Android
- 5. Silverlight 4 - mã hóa dữ liệu PCM từ micrô
- 6. cách chơi dữ liệu thô pcm trong java
- 7. iOS: Phát bộ đệm PCM từ luồng
- 8. Tạo một giai điệu bằng javascript thuần túy với Chromium WebAudio API
- 9. Chuyển đổi PCM sang AAC bằng mediacodec
- 10. Cách mã hóa PCM-âm thanh đã được lấy lại thành AAC bằng cách sử dụng ffmpeg-API khi số lượng mẫu pcm đầu vào không bằng 1024
- 11. Cách trộn nhiều luồng PCM bằng ALSA
- 12. Sử dụng Dịch vụ Hàng đợi Âm thanh để phát dữ liệu PCM qua kết nối ổ cắm
- 13. Không thể xóa video bằng API dữ liệu Youtube
- 14. Truy cập dữ liệu API Facebook bằng Python
- 15. Trích xuất dữ liệu biên độ từ PCM tuyến tính trên iPhone
- 16. API dữ liệu Youtube: Nhận quyền truy cập vào luồng và phát phương tiện (JAVA)
- 17. Trasnmission Trasnmission dữ liệu ứng dụng iOS bằng API hỗ trợ tài liệu mới
- 18. Trích xuất dữ liệu từ Wikipedia API
- 19. AudioRecord - ghi tệp PCM
- 20. API dữ liệu 2G hoặc 3G
- 21. Giới hạn API dữ liệu YouTube?
- 22. Đăng dữ liệu lên asp.net Web API
- 23. API Java cho dữ liệu tài chính
- 24. Lưu trữ dữ liệu API Facebook
- 25. Phát triển API REST API
- 26. Dữ liệu không đồng bộ thông qua API dữ liệu mới của Bloomberg (COM v3) bằng Python?
- 27. Số PCM Android
- 28. Bắt dữ liệu POST liệu từ phương pháp Web API
- 29. PCM Web Audio Api Javascript - Tôi đang bị méo âm thanh
- 30. Máy phát API C#
Đoạn mã luôn hữu ích. – ebidel
bất cứ ai có thể cho tôi biết làm thế nào để chuyển đổi mảng byte ký kết để Float32Array? – user894554
Không quá tự hào để upvote này, nhưng đây là một câu hỏi hay, như các tài liệu chính thức bỏ qua phần PCM chơi, đó sẽ là chức năng trực tiếp, và tập trung vào decodeAudioData(), đó là một 'helper'. –