2012-08-16 15 views
8

से रिकॉर्ड ऑडियो स्ट्रीम हाल के दिनों में, मैंने ऑडियो स्ट्रीम रिकॉर्ड करने के लिए जावास्क्रिप्ट का उपयोग करने का प्रयास किया। मैंने पाया कि कोई उदाहरण कोड नहीं है जो काम करता है।getUserMedia

क्या कोई ब्राउज़र समर्थन कर रहा है?

यहाँ मेरी कोड

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || 
         navigator.mozGetUserMedia || navigator.msGetUserMedia; 

navigator.getUserMedia({ audio: true }, gotStream, null); 
function gotStream(stream) { 

     msgStream = stream;   
     msgStreamRecorder = stream.record(); // no method record :(
} 
+0

मैं भी ऐसा करने के तरीके पर एक ट्यूटोरियल के लिए देख रहा हूँ। – ericso

उत्तर

4

आप इस साइट की जाँच कर सकते हैं।

+4

ध्यान दें कि [लिंक-केवल उत्तर] (http: // मेटा .stackoverflow.com/टैग/लिंक-केवल-उत्तर/जानकारी) निराश हो जाते हैं, इसलिए SO समाधान एक समाधान के लिए खोज का अंत बिंदु होना चाहिए (बनाम अभी तक संदर्भों का एक और स्टॉपओवर, जो समय के साथ पुराना हो जाता है)। लिंक को संदर्भ के रूप में रखते हुए, यहां स्टैंड-अलोन सारांश जोड़ना पर विचार करें। – kleopatra

-1

वर्तमान में, सर्वर पक्ष पर डेटा भेजने के बिना यह संभव नहीं है। हालांकि, यह ब्राउज़र में जल्द ही संभव हो जाएगा यदि वे MediaRecorder working draft का समर्थन करना शुरू करते हैं। https://webaudiodemos.appspot.com/AudioRecorder/index.html

यह एक फ़ाइल (.wav) ग्राहक के पक्ष में ऑडियो संग्रहीत करता है:

+0

इस सुविधा के लिए यहां बग ट्रैकर है [लिंक] (http://code.google.com/p/chromium/issues/detail?id=113676) – Vidhuran

23

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 है।

4

MediaRecorder API का समर्थन करने वाले ब्राउज़र के लिए इसका उपयोग करें।

पुराने ब्राउज़र कि MediaRecorder एपीआई का समर्थन नहीं करता के लिए

तीन तरीके यह

  1. रूप wav
    • सभी कोड क्लाइंट-साइड करने के लिए कर रहे हैं।
    • असम्पीडित रिकॉर्डिंग।
    • स्रोत कोड ->http://github.com/mattdiamond/Recorderjs
  2. mp3
    • सभी कोड क्लाइंट साइड के रूप में।
    • संपीड़ित रिकॉर्डिंग।
    • स्रोत कोड ->http://github.com/Mido22/mp3Recorder
  3. opus packets रूप
    • क्लाइंट और सर्वर (node.js) कोड (के रूप में wav, mp3 या ogg उत्पादन प्राप्त कर सकते हैं)।
    • संपीड़ित रिकॉर्डिंग।
    • स्रोत कोड ->http://github.com/Mido22/recordOpus