audio相關

AudioContext.decodeAudioData:
得到:
AudioBuffer {length: 9853020, duration: 205.27125, sampleRate: 48000, numberOfChannels: 2}
length: 9853020
duration: 205.27125
sampleRate: 48000
numberOfChannels: 2

document.getElementById("profile_mp3").onchange = function() {
                            var o = new FileReader;
                            o.onload = function(e) {
                                //這個e.target.result是AudioBuffer
                            }
                            o.readAsArrayBuffer($("#profile_mp3").get(0).files[0]);
                        };

輸入給audiocontext解碼:

audioContext = new AudioContext;
                                audioContext.decodeAudioData(e.target.result, (t) => {
                                   console.log("ttttt=", t);
                                });

得到:
AudioBuffer {length: 9853020, duration: 205.27125, sampleRate: 48000, numberOfChannels: 2}
此時,audioContext也會對象會存儲這些信息:

AudioContext {baseLatency: 0.01, destination: AudioDestinationNode, currentTime: 1.2693333333333334, sampleRate: 48000, listener: AudioListener, …}
baseLatency: 0.01
destination: AudioDestinationNode {maxChannelCount: 2, context: AudioContext, numberOfInputs: 1, numberOfOutputs: 0, channelCount: 2, …}
currentTime: 5.770666666666667
sampleRate: 48000
listener: AudioListener {positionX: AudioParam, positionY: AudioParam, positionZ: AudioParam, forwardX: AudioParam, forwardY: AudioParam, …}
state: "running"
onstatechange: null
audioWorklet: AudioWorklet {}
__proto__: AudioContext

當playAudioSource時,audioSource對象是一個AudioBufferSourceNode,這個是通過audioContext.createBufferSource來創(chuàng)建的

實現混音的代碼:

selectMp32:function() {
                        var that = this;
                        document.getElementById("profile_mp32").onchange = function() {
                            var o = new FileReader;
                            o.onload = function(e) {
                                const audioBuffer = e.target.result;
                                that.audioContext.decodeAudioData(e.target.result, (t) => {
                                    audioSource = that.audioContext.createBufferSource();
                                    audioSource.buffer = t;
                                    audioSource.loop = true;

                                    audioSource.connect(that.audioContext.destination);
                                    audioSource.start(0, 0);
                                });
                            }
                            o.readAsArrayBuffer($("#profile_mp32").get(0).files[0]);
                        };
                        $("#profile_mp32").click();
                    },
                    selectMp3:function() {
                        var that = this;
                        document.getElementById("profile_mp3").onchange = function() {
                            var o = new FileReader;
                            o.onload = function(e) {
                                const audioBuffer = e.target.result;

                                that.audioContext.decodeAudioData(e.target.result, (t) => {
                                    audioSource = that.audioContext.createBufferSource();
                                    audioSource.buffer = t;
                                    audioSource.loop = true;
                                    var analyserNode = that.audioContext.createAnalyser();
                                    analyserNode.fftSize = 2048;
                                    var gainNode = that.audioContext.createGain();
                                    // var audioStream = audioContext.create();

                                    audioSource.connect(that.audioContext.destination);
                                    audioSource.start(0, 0);
                                    console.log("audioStream=", audioStream);
                                    var o = audioStream.stream.getTracks()[0];
                                    console.log("tracks=", o);
                                });
                            }
                            o.readAsArrayBuffer($("#profile_mp3").get(0).files[0]);
                        };
                        $("#profile_mp3").click();
                    },
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容