2014-08-27 2 views
31

द्वारा कैप्चर किए जाने के बाद वेबआरटीसी के साथ सर्वर होस्ट करने के लिए मीडियास्ट्रीम भेजना मैं getUserMedia() का उपयोग कर ऑडियो डेटा कैप्चर कर रहा हूं और मैं इसे अपने सर्वर पर भेजना चाहता हूं ताकि मैं इसे एक MySQL फ़ील्ड में ब्लॉब के रूप में सहेज सकूं।GetRserMedia

यह सब मैं करने की कोशिश कर रहा हूं। मैंने वेबआरटीसी का उपयोग करके ऐसा करने के कई प्रयास किए हैं, लेकिन मुझे इस बिंदु पर भी पता नहीं है कि यह सही है या ऐसा करने का सबसे अच्छा तरीका भी है।

कोई भी मेरी मदद कर सकता है?

यहाँ है कोड मैं माइक्रोफोन से ऑडियो कब्जा करने के लिए उपयोग कर रहा हूँ:

navigator.getUserMedia({ 
    video:false, 
    audio:true, 
},function(mediaStream){ 

    // output mediaStream to speakers: 
    var mediaStreamSource=audioContext.createMediaStreamSource(mediaStream); 
    mediaStreamSource.connect(audioContext.destintion); 

    // send mediaStream to server: 

    // WebRTC code? not sure about this... 
    var RTCconfig={}; 
    var conn=new RTCPeerConnection(RTCconfig); 

    // ??? 

},function(error){ 
    console.log('getUserMedia() fail.'); 
    console.log(error); 
}); 

मैं कैसे सर्वर अप करने के लिए इस mediaStream भेज सकते हैं?

चारों ओर Googling के बाद Ive WebRTC, ध्यान दे रहा है, लेकिन यह सिर्फ संचार सहकर्मी सहकर्मी के लिए हो रहा है - वास्तव में, अब मैं इस अधिक में देख रहा हूँ, मुझे लगता है कि यह जाने का रास्ता है। यह क्लाइंट ब्राउज़र से मेजबान वेबसर्वर तक संवाद करने का तरीका प्रतीत होता है, लेकिन कुछ भी मैं कोशिश करने के लिए भी काम करने के करीब आता है।

Ive the W3C documentation (जिसे मैं बहुत अमूर्त खोज रहा हूं) से गुजर रहा हूं, और मैं this article on HTML5 Rocks (जो उत्तर से अधिक प्रश्न ला रहा है) के माध्यम से जा रहा है। स्पष्ट रूप से मुझे सिग्नलिंग विधि की आवश्यकता है, क्या कोई सलाह दे सकता है कि मीडियास्ट्रीम, एक्सएचआर, एक्सएमपीपी, एसआईपी, सॉकेट.ओओ या कुछ और भेजने के लिए कौन सी सिग्नलिंग विधि सबसे अच्छी है?

वेबआरटीसी प्राप्त करने के समर्थन के लिए मुझे सर्वर पर क्या चाहिए? मेरा वेब सर्वर मूल लैंप स्टैक चला रहा है।

mediaStream तक सर्वर को भेजने से पहले रिकॉर्डिंग समाप्त हो गई है, या mediaStream को रिकॉर्ड करने के बाद इसे बेहतर करना बेहतर है? मैं जानना चाहता हूं कि मैं इसे सही तरीके से करने जा रहा हूं या नहीं। मैंने जावास्क्रिप्ट और एचटीएमएल 5 में फाइल अपलोडर लिखे हैं, लेकिन इन mediaStreams में से एक को अपलोड करना अधिक जटिल लगता है और मुझे यकीन नहीं है कि मैं इसे सही तरीके से देख रहा हूं।

इस पर किसी भी मदद की सराहना की जाएगी।

+0

क्या आप केवल रिकॉर्ड की गई फाइल को स्टोर करना चाहते हैं? यदि ऐसा है, तो आप अपने सर्वर पर ब्लॉब अपलोड कर सकते हैं जहां यह इसे सहेज सकता है। या आप चाहते हैं कि आपका सर्वर क्लाइंट से लाइव स्ट्रीम प्राप्त कर सके और सर्वर को रिकॉर्डिंग को संभालने दें? –

+0

मैं सिर्फ रिकॉर्ड की गई फाइल को सर्वर पर संग्रहीत करना चाहता हूं। – Jimmery

उत्तर

29

आप चल रहे रहते समय लाइव स्ट्रीम को अपलोड नहीं कर सकते हैं। ऐसा इसलिए है क्योंकि यह एक लाइव स्ट्रीम है।

तो, यह आपको एक मुट्ठी विकल्पों के साथ छोड़ देता है।

  1. RecordRTC वहां से कई रिकॉर्डर में से एक का उपयोग करके ऑडियो स्ट्रीम रिकॉर्ड करें काफी अच्छी तरह से काम करता है। स्ट्रीम पूरा होने तक प्रतीक्षा करें और फिर फ़ाइल अपलोड करें।
  2. टाइमर के साथ रिकॉर्ड किए गए ऑडियो के छोटे चुने हुए भेजें और उन्हें फिर से सर्वर पक्ष में विलय करें। This is an example of this
  3. ऑडियो पैकेट भेजें क्योंकि वे आपके सर्वर पर websockets पर होते हैं ताकि आप उन्हें वहां से जोड़ और विलय कर सकें। My version of RecordRTC does this
  4. अपने सर्वर के साथ एक वास्तविक सहकर्मी कनेक्शन बनाएं ताकि यह कच्चे आरटीपी स्ट्रीम को पकड़ सके और आप कुछ निचले स्तर के कोड का उपयोग करके स्ट्रीम रिकॉर्ड कर सकते हैं। यह आसानी से Janus-Gateway के साथ किया जा सकता है।

धाराओं को भेजने के लिए स्ट्रीम भेजने की प्रतीक्षा करने के लिए, यह सब इस बात पर निर्भर करता है कि आप कितनी देर तक रिकॉर्डिंग कर रहे हैं। यदि यह लंबे समय तक है, तो मैं कहूंगा कि रिकॉर्डिंग में भाग भेजना या सक्रिय रूप से websockets पर ऑडियो पैकेट भेजना बेहतर समाधान है क्योंकि क्लाइंट पक्ष से बड़ी ऑडियो फ़ाइलों को अपलोड और स्टोर करना क्लाइंट के लिए कठिन हो सकता है।

फ़ायरफ़ॉक्स में वास्तव में इसका own solution for recording है लेकिन यह क्रोम में समर्थित नहीं है, इसलिए यह आपकी स्थिति में काम नहीं कर सकता है।

एक तरफ, सिग्नलिंग विधि का उल्लेख सत्र निर्माण/नष्ट करने के लिए है और वास्तव में मीडिया के साथ कुछ भी नहीं है। यदि आप ऊपर दिखाए गए समाधान संख्या 4 का उपयोग कर रहे थे तो आप केवल इसके बारे में वास्तव में चिंता करेंगे।

3

आपके लिए एक अच्छा एपीआई MediaRecorder API होगा लेकिन यह वेब ऑडियो एपीआई से कम समर्थित है, इसलिए आप इसे स्क्रिप्ट नोड का उपयोग करके कर सकते हैं या Recorder.js (या अपने स्वयं के स्क्रिप्ट नोड बनाने के लिए इसका आधार) का उपयोग कर सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^