2013-07-26 9 views
5

मुझे वेब कैमरा बनाने की आवश्यकता है जो वेब कैमरा वीडियो स्ट्रीम और माइक्रो ऑडियो स्ट्रीम प्राप्त करने के लिए वेबआरटीसी का उपयोग करता है और तुरंत इसे कई क्लाइंट्स को प्रसारित करने के लिए सर्वर पर अनुवाद करता है। ऐप को वास्तविक समय में पूर्ण डुप्लेक्स में करना होगा। मेरा मतलब है कि यह एक तरह का लाइव वीडियो चैट होगा। यह कुछ प्रकार का शैक्षणिक ऐप होगा। तो सवाल यह है: क्या अब यह संभव है? मुझे किस तकनीक का उपयोग करना चाहिए? क्या मुझे बैकएंड पर WebSocket और Node.js के साथ WebRTC का उपयोग करना चाहिए? या मैं नोड के बजाय PHP का उपयोग कर सकते हैं? क्या मैं इसके लिए सॉकेट.io का उपयोग कर सकता हूं? क्या इसे हासिल करने के कोई अन्य तरीके हैं? फ्लैश हो सकता है?क्या अब वेब कैमरा से वीडियो स्ट्रीम पढ़ने के लिए GetUserMedia API का उपयोग करना संभव है और इसे सीधे प्रसारण के लिए सर्वर पर भेजना संभव है?

उत्तर

4

वेबआरटीसी में पीयरकनेक्शन एपीआई को सहकर्मियों के बीच एक या अधिक कनेक्शन आयोजित करने के लिए बैक-एंड सर्वर की आवश्यकता नहीं है।

केवल एक चीज जो आपको बैक-एंड सर्वर की आवश्यकता है, वह सहकर्मियों के बीच कनेक्शन स्थापित करने के लिए मध्यस्थ के रूप में सेवा करना है। इसके लिए, आप वेबस्केट एपीआई, अजाक्स, या इसे प्राप्त करने के लिए आवश्यक किसी अन्य माध्यम का उपयोग कर सकते हैं। साथ ही, हाँ, आप वेबसॉकेट के लिए सर्वर-साइड लिखने के लिए PHP का उपयोग कर सकते हैं (या जो भी विधि आप पीयर-टू-पीयर कनेक्शन स्थापित करने के लिए उपयोग करना चाहते हैं)। यह वास्तव में आप पर निर्भर है।

फिलहाल, क्रोम और फ़ायरफ़ॉक्स वीडियो चैट करने की संभावना बनाने के लिए केवल वेबआरटीसी एपीआई का समर्थन करता है। बहुत जल्द, ओपेरा शायद मिश्रण में शामिल हो जाएगा, लेकिन कोई भी सुनिश्चित नहीं है कि क्या वेबआरटीसी आईई 11 में जोड़ा जाएगा या नहीं, और ऐप्पल को जल्द ही सफारी में वेबआरटीसी जोड़ने का कोई इरादा नहीं है (क्योंकि उनके पास अपनी खुद की मालिकाना तकनीक है वह; परिचित ध्वनि ?!)।

वैसे भी, वेबआरटीसी आपकी सबसे अच्छी शर्त है। एक अतिरिक्त नोट के रूप में, मुझे नहीं लगता कि सर्वर पर वीडियो और ऑडियो भेजने के लिए जेएस का उपयोग करना संभव है, और उसके बाद सर्वर उस डेटा को अन्य सहकर्मी को आगे बढ़ाएगा। इसके बजाय, आपको पीयर-टू-पीयर कनेक्शन स्थापित करने के लिए वेबआरटीसी का उपयोग करने की आवश्यकता है, और फिर वहां से जाएं।

संपादित: यदि आप एक मोड़ सर्वर का उपयोग करते हैं, तो आप एक सर्वर के माध्यम से अपने ऑडियो और वीडियो डेटा को कहीं और भेजें सकता है, लेकिन है कि वास्तव में कम से कम आदर्श स्थिति है, और आप अभी भी केवल कर सकते हैं आप WebRTC एपीआई उपयोग कर रहे हैं कि ।

+0

उत्तर के लिए धन्यवाद! मुझे पता है कि वेबआरटीसी सीधे ब्राउज़र को जोड़ने में सक्षम है। लेकिन मुझे प्रमाणीकरण और अधिकृत उद्देश्यों के लिए एक वेबसर्वर चाहिए। – paperstreet7

+0

और यह पूरी तरह से आप पर निर्भर है। आप जो कुछ भी चाहते हैं उसे अधिकृत और प्रमाणित कर सकते हैं, और यदि सब कुछ ठीक है तो केवल वेबआरटीसी कनेक्शन की अनुमति दें। – HartleySan

+0

@ paperstreet7 - यह कई सालों से हुआ है लेकिन मैं एक समान आवश्यकता में भाग गया हूं, क्या आपने समाधान में आने का प्रबंधन किया था? – po10cySA

2

यह आपकी मदद कर सकता है।

MediaStreamRecorder getUserMedia() स्ट्रीम (अभी भी कार्यान्वयन के तहत) रिकॉर्ड करने के लिए एक वेबआरटीसी एपीआई है। यह वेब ऐप्स को लाइव ऑडियो/वीडियो सत्र से फ़ाइल बनाने की अनुमति देता है।

सर्वर पर स्ट्रीम भेजने के लिए यहां एक उदाहरण कार्यान्वयन है।

<video autoplay></video> 

    <script language="javascript" type="text/javascript"> 
    function onVideoFail(e) { 
     console.log('webcam fail!', e); 
     }; 

    function hasGetUserMedia() { 
     // Note: Opera is unprefixed. 
     return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || 
       navigator.mozGetUserMedia || navigator.msGetUserMedia); 
    } 

    if (hasGetUserMedia()) { 
     // Good to go! 
    } else { 
     alert('getUserMedia() is not supported in your browser'); 
    } 

    window.URL = window.URL || window.webkitURL; 
    navigator.getUserMedia = navigator.getUserMedia || 
          navigator.webkitGetUserMedia || 
           navigator.mozGetUserMedia || 
           navigator.msGetUserMedia; 

    var video = document.querySelector('video'); 
    var streamRecorder; 
    var webcamstream; 

    if (navigator.getUserMedia) { 
     navigator.getUserMedia({audio: true, video: true}, function(stream) { 
     video.src = window.URL.createObjectURL(stream); 
     webcamstream = stream; 
    // streamrecorder = webcamstream.record(); 
     }, onVideoFail); 
    } else { 
     alert ('failed'); 
    } 

    function startRecording() { 
     streamRecorder = webcamstream.record(); 
     setTimeout(stopRecording, 10000); 
    } 
    function stopRecording() { 
     streamRecorder.getRecordedData(postVideoToServer); 
    } 
    function postVideoToServer(videoblob) { 

     var data = {}; 
     data.video = videoblob; 
     data.metadata = 'test metadata'; 
     data.action = "upload_video"; 
     jQuery.post("http://www.kongraju.in/uploadvideo.php", data, onUploadSuccess); 
    } 
    function onUploadSuccess() { 
     alert ('video uploaded'); 
    } 

    </script> 

    <div id="webcamcontrols"> 
     <button class="recordbutton" onclick="startRecording();">RECORD</button> 
    </div> 

आप सर्वर से दर्ज की गई फ़ाइल भेज सकते हैं।

संदर्भ:

http://www.w3.org/TR/mediastream-recording/

+0

क्या आप जानते हैं कि वीडियो फ़ाइल/टुकड़ा किस प्रकार टाइप किया गया है, यह सर्वर पर भेजने से पहले 'डेटा = {}' भाग पर पहुंच गया? – JerryFox

+2

मुझे त्रुटि मिलती है _Uncaught TypeError: लाइन 41 'streamRecorder = webcamstream.record() पर अपरिभाषित_ की संपत्ति' रिकॉर्ड 'नहीं पढ़ सकता; 'क्रोम संस्करण 46.0.2490.86 मीटर पर –

1

लाइव द्वैध वीडियो चैट अधिक भागीदारों के साथ वीडियो कॉन्फ्रेंसिंग इस के लिए आप किसी सर्वर घटक है कि ऑडियो और प्रतिभागियों और यह प्रसारण उन्हें का वीडियो घुलमिल की जरूरत है। इसके लिए आपको मीडिया सर्वर की बहुत आवश्यकता है। वेबआरटीसी के लिए कुछ उपलब्ध हैं; Doubango के telepresence सर्वर को देखो: https://code.google.com/p/telepresence/

Mobicents WebRTC के लिए एक ही है, लेकिन बहु मीडिया क्षमताओं के लिए एक अच्छा एसआईपी ढेर है सीमित हैं।

अन्यथा क्यों एक लिखना शुरू नहीं करते? :)

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

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