getUserMedia आपको डिवाइस तक पहुंच प्रदान करता है, लेकिन ऑडियो रिकॉर्ड करने के लिए आप पर निर्भर है। ऐसा करने के लिए, आप डेटा के बफर का निर्माण, डिवाइस पर 'सुनना' चाहते हैं। फिर जब आप डिवाइस को सुनना बंद कर देते हैं, तो आप उस डेटा को WAV फ़ाइल (या कोई अन्य प्रारूप) के रूप में प्रारूपित कर सकते हैं। फ़ॉर्मेट करने के बाद आप इसे अपने सर्वर, एस 3 पर अपलोड कर सकते हैं, या सीधे ब्राउज़र में चला सकते हैं।
अपने बफर के निर्माण के लिए उपयोगी तरीके से डेटा सुनने के लिए, आपको एक स्क्रिप्टप्रोसेसर नोड की आवश्यकता होगी। एक स्क्रिप्टप्रोसेसर नोड मूल रूप से इनपुट (माइक्रोफ़ोन) और आउटपुट (स्पीकर) के बीच बैठता है, और आपको स्ट्रीम के रूप में ऑडियो डेटा में हेरफेर करने का मौका देता है। दुर्भाग्य से कार्यान्वयन सरल नहीं है।
आप की आवश्यकता होगी:
- getUserMedia डिवाइस
- AudioContext एक ScriptProcessorNode तक पहुँचने के लिए
- MediaStreamAudioSourceNode एक MediaStreamAudioSourceNode और बनाने के लिए ऑडियो स्ट्रीम का प्रतिनिधित्व करने के
- ScriptProcessorNode स्ट्रीमिंग तक पहुँच प्राप्त करने एक onaudioprocessevent के माध्यम से ऑडियो डेटा। घटना चैनल डेटा को उजागर करती है जिसे आप अपने बफर के साथ बनायेंगे।
एक साथ यह सब लाना: इस खुद के सभी निर्माण के बजाय
navigator.getUserMedia({audio: true},
function(stream) {
// create the MediaStreamAudioSourceNode
var context = new AudioContext();
var source = context.createMediaStreamSource(stream);
var recLength = 0,
recBuffersL = [],
recBuffersR = [];
// create a ScriptProcessorNode
if(!context.createScriptProcessor){
node = context.createJavaScriptNode(4096, 2, 2);
} else {
node = context.createScriptProcessor(4096, 2, 2);
}
// listen to the audio data, and record into the buffer
node.onaudioprocess = function(e){
recBuffersL.push(e.inputBuffer.getChannelData(0));
recBuffersR.push(e.inputBuffer.getChannelData(1));
recLength += e.inputBuffer.getChannelData(0).length;
}
// connect the ScriptProcessorNode with the input audio
source.connect(node);
// if the ScriptProcessorNode is not connected to an output the "onaudioprocess" event is not triggered in chrome
node.connect(context.destination);
},
function(e) {
// do something about errors
});
मैं तुम्हें AudioRecorder कोड है, जो भयानक है का उपयोग सुझाव देते हैं। यह एक डब्ल्यूएवी फ़ाइल में बफर लिखने को भी संभालता है। Here is a demo।
यहां एक और great resource है।
मैं भी ऐसा करने के तरीके पर एक ट्यूटोरियल के लिए देख रहा हूँ। – ericso