Tôi làm cách nào để phát âm thanh ngược lại với web audio API? Có vẻ như tôi không tìm thấy bất kỳ thứ gì trong tài liệu API ...Tôi làm cách nào để phát âm thanh ngược lại với API âm thanh trên web?
Trả lời
Bạn có thể làm một cái gì đó như thế này:
var context = new AudioContext(),
request = new XMLHttpRequest();
request.open('GET', 'path/to/audio.mp3', true);
request.responseType = 'arraybuffer';
request.addEventListener('load', function(){
context.decodeAudioData(request.response, function(buffer){
var source = context.createBufferSource();
Array.prototype.reverse.call(buffer.getChannelData(0));
Array.prototype.reverse.call(buffer.getChannelData(1));
source.buffer = buffer;
});
});
Đó là một ví dụ siêu đơn giản - nhưng điểm mấu chốt là cơ bản mà bạn có thể lấy ví dụ Float32Array
cho mỗi kênh trong AudioBuffer và đảo ngược chúng.
Bạn có thể sử dụng phần tử <audio>
của html5 và đặt playbackRate
thuộc tính thành giá trị âm.
Trong javascript bạn có thể làm như sau
var song = document.getElementsByTagName('audio')[0];
song.playbackRate = -1;
Thẻ âm thanh không thực hiện theo yêu cầu của tôi, đó là lý do tại sao tôi cần sử dụng API âm thanh trên web cụ thể. – lakenen
Tốc độ phát lại phải nằm trong khoảng từ 0,5 đến 4,0. Giá trị âm không hoạt động. [Nguồn MDN] (https://developer.mozilla.org/en-US/Apps/Fundamentals/Audio_and_video_delivery/WebAudio_playbackRate_explained) – nicusor
nếu bạn có một yếu tố AudioBufferSourceNode:
audioBufferSourceNode.playbackRate = -1;
-EDIT-
Webkit không có tính năng đó.
Tôi đã thử cách này và nó không hoạt động. MinValue trên playbackRate AudioParam là 0. Khi tôi đặt nó thành giá trị nhỏ hơn 0, nó xuất hiện để phát lại ở defaultValue (là 1). – lakenen
Okey ... đó là một lỗi thực tế mà webkit: ( https://bugs.webkit.org/show_bug.cgi?id=69725 – Nullpo
Sẽ thật tuyệt nếu điều này thực sự hiệu quả! – lakenen
playbackRate = -1.0;
hoạt động trong Safari (9.1.2) ngay bây giờ!
- 1. API âm thanh trên web: Làm cách nào tôi có thể bắt đầu phát lại âm thanh?
- 2. Âm thanh khuếch đại với API âm thanh web
- 3. Nhận mảng byte âm thanh với API âm thanh HTML5?
- 4. API âm thanh trên web WaveShaperNode
- 5. API âm thanh trên web: lập lịch âm thanh và xuất kết hợp
- 6. Phát lại âm thanh Ruby
- 7. Phát âm thanh trên iPad
- 8. Phát âm thanh với HTML5
- 9. API âm thanh trên web: Làm cách nào để phát một nguồn đơn âm chỉ trong kênh trái hoặc phải?
- 10. Cách phát tệp âm thanh
- 11. Làm cách nào để phát tệp âm thanh với jQuery?
- 12. Tôi làm cách nào để ghi lại âm thanh hiện đang phát trên iPhone?
- 13. Phát Âm thanh với J2ME
- 14. Phát âm thanh với SoundPool
- 15. Làm cách nào để nhúng âm thanh vào trang web?
- 16. Android: Tôi làm cách nào để đưa Âm thanh thông báo bằng Tài nguyên âm thanh?
- 17. Lặp lại âm thanh HTML5 trên iPhone
- 18. âm thanh nền tảng API
- 19. Phát âm thanh và âm thanh thuật toán
- 20. Tốc độ phát lại âm thanh pygame
- 21. Phát luồng âm thanh an toàn bằng Âm thanh HTML5
- 22. Cách phát âm thanh bằng Python KHÔNG làm gián đoạn âm nhạc/các âm thanh khác phát khi đang chơi
- 23. phát lại âm thanh thấp độ trễ trên Android
- 24. Làm cách nào để phát âm thanh cửa sổ chuẩn?
- 25. Âm thanh trên web: Không có âm thanh nào trong kênh bên phải
- 26. Âm thanh trên iPhone
- 27. Phát trực tuyến âm thanh trực tiếp trên trang web
- 28. Ghi lại âm thanh iOS
- 29. Âm thanh âm thanh định tuyến iPhone
- 30. Làm cách nào để phát âm thanh của iPhone?
Điều này có hiệu quả, cảm ơn. thực sự đang tìm kiếm thứ gì đó giống như thiết lập playbackRate thành số âm nên tôi có thể chơi một cái gì đó tiến và lùi dễ dàng từ cùng một điểm trong clip, nhưng vì bạn đã trả lời câu hỏi với phản hồi hợp lệ (và hoạt động!), tôi sẽ chấp nhận – lakenen
Vâng, tôi nghĩ bạn có thể đang tìm kiếm thứ gì đó ít hacky hơn, nhưng đây là cách tiếp cận duy nhất tôi có thể nghĩ ra. những gì bạn muốn - nhưng tôi đã không thực sự cố gắng đảo ngược bộ đệm trên bay, vì vậy tôi không thể nói chắc chắn. Dù bằng cách nào, nó là tốt để xem người chơi khác chơi với âm thanh Web API. Hy vọng rằng một số tài liệu phong nha sẽ bắt đầu xuất hiện trong vài tháng tới. –