2012-10-24 49 views
57

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

क्या एचटीएमएल 5 और नोडजेएस/बाइनरीजेएस में ऑडियो स्ट्रीम करने के लिए फ्लैश-जैसे समाधान को लागू करना आम तौर पर संभव है (जहां से हम स्ट्रीम डेटा प्राप्त करते हैं, जैसे वेबआरटीसी या अन्य)। यदि हां, तो आप इसके बारे में कैसे जाएंगे?

स्टैक ओवरफ्लो found here और 2010 से केवल एक ही पूछताछ की गई है। तब से नोडजेएस और एचटीएमएल 5 बड़े हो गए हैं और परिपक्व हो गए हैं।

लोगों को आमतौर पर क्या करें: मल्टीमीडिया का उपयोग करते समय स्ट्रीमिंग (यानी वीडियो या ऑडियो) एक सर्वर के लिए, वहाँ निश्चित रूप से कुछ भी नहीं getUserMedia() से भरा आगमन तक समय में वर्तमान बिंदु पर फ्लैश धड़कता है - जो काफी ईमानदारी से हो सकता है take a while तक 99% ब्राउज़र उपयोगकर्ताओं को इसका उपयोग करना होगा।

जनरल सर्वर से डेटा स्ट्रीम करने के लिए अभ्यास एक ग्राहक फ़्लैश या फ्लेक्स आवेदन जो तब RED5, FMS या Wowza की तरह एक RTMP प्रोटोकॉल संचालित मीडिया सर्वर से कनेक्ट किया जाता है का उपयोग करना है। उदाहरण के लिए, RTMP से अधिक माइक्रोफोन इनपुट भेजने ग्राहक अनुप्रयोग एक सर्वर अनुप्रयोग एक easibly सर्वर से डेटा स्ट्रीम करने के लिए सक्षम है के साथ मिलकर (सरलीकृत संस्करण)

import flash.net.NetStream; 

private var myMic:Microphone; 
private var nc:NetConnection; 
private var ns:NetStream 

nc = new NetConnection();  
ns = new NetStream(nc); 
nc.connect(rtmp://localhost/serverApp); 
myMic = Microphone.getMicrophone(); 
ns.attachAudio(myMic); 

की तरह लग सकता है।

मैं करना चाहते हैं क्या: एक अनुप्रयोग सर्वर nodeJS (संभवतः socketIO और binaryJS को लागू), जो आने वाले RTMP धारा पकड़ता पर चल रहा है। जैसे

//require 
var rtmp = require('node-rtmp'), 
var fs = require('fs'); 

//rtmp server address 
var rtmpServer = 'rtmp://localhost'; 

//create a binary server listening that receives stream data 
var RTMPServer = rtmp.RTMPServer(); 
var server = RTMPServer ({port: 1935}); 

server.on('connection', function(client){ 
//check if user is allowed to do so 
rtmp.newStream(client.stream); 
}); 

कुछ संभवतः यह socketIO उपयोग करने के लिए eventEmitters के माध्यम से उपयोगकर्ता बातचीत के बीच अंतर करने के लिए बेहतर हो सकता है।

क्या फायदे हो सकते हैं: आम तौर पर यह इस तरह के दृष्टिकोण को बनाने के लिए थोड़ा ऊपर की तरह लगता है, लेकिन मेरे लिए फायदे हो सकते हैं और मैं आपको इस पर टिप्पणी करना चाहूंगा।

  • उदाहरण के द्वारा उपयोगकर्ता इंटरैक्शन की आसान सत्यापन उदा। express और socketIO
  • (RTMP माध्यम से) और getUserMedia() (जोड़ने binaryJS और मोज़िला AudioAPI द्वारा द्विआधारी परिवहन तंत्र के माध्यम से)
  • अगर getUserMedia() पूरी तरह से समर्थित हो जाता है, फ्लैश कार्यान्वयन आसानी से
  • छोड़ा जा सकता है एक फ्लैश की संकर कार्यान्वयन मैंने talke:
  • RTMP फॉलोअप और सर्वर में सामान्य
  • आसान कार्यान्वयन में उपयोगकर्ता बातचीत पर अधिक नियंत्रण

अद्यतन चौखटे श्री मल्कोन्टेंटी-विल्सन के लिए जो only node-rtmp package के लिए ज़िम्मेदार है, जिसे लिखा गया था लेकिन 8 महीने पहले बंद कर दिया गया था क्योंकि इसे खराब लिखा गया था और उसने रोडब्लॉक मारा। कोई भी जिसने इसका इस्तेमाल किया या कोड को जांचने में सक्षम था?

अद्यतन 2: श्री Malcontenti विल्सन बस मुझे node-mtrude (एक अजीब नाम की तरह) जो कि हम क्या शायद चाहेगा की तरह कर रही है करने के लिए मेरा ध्यान पाने के लिए एक मेल भेजें। क्या कोई इस तरह के पैकेज के साथ काम करता है?

+0

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

+0

मैं आपको आरटीएमपीम्प (http://rtmpdump.mplayerhq.hu) लाइब्रेरी के लिए एक सी एक्सटेंशन बाइंडिंग लिखने की सलाह दूंगा, जैसा कि यहां वर्णित है https://www.cloudkick.com/blog/2010/aug/23/writing- nodejs-native-extension/ –

+2

मुझे वास्तव में node.js के बारे में कुछ भी पता नहीं है, लेकिन [bigbluebutton] (https://code.google.com/p/bigbluebutton/) फ्लैश में ऐसा कुछ लागू करता है, और वे काम कर रहे हैं एक एचटीएमएल 5 समाधान पर। यह कोड की जांच करने लायक हो सकता है। – ldrumm

उत्तर

2

हां यह संभव है, लेकिन आपको कुछ समस्याएं हैं।

1) रेड 5 बहुत कम दस्तावेज और छोटी गाड़ी है।

2) RTMPE/rtmps

3) प्रदर्शन/scalability

4) 1 के माध्यम से 3 चीजें आप को दूर कर सकते हैं, लेकिन नहीं मीडिया वितरण और यह सभी मुद्दों को बहुत परिचित संबद्ध है पता करने के लिए प्राप्त किए बिना। जब तक आप पूरा कर लेंगे, तब तक आप 800 लोगों में से एक होंगे जो वास्तव में इसे समझते हैं। आपको अप्रत्याशित समस्याओं को हल करने का एक लंबा रास्ता तय करना होगा।

+6

+1 पर +1 - रेड 5 पूरी तरह से अनियंत्रित/पुराना है, और उसके खिलाफ खोले गए मुद्दे महीनों तक बैठते हैं, फिर भी वे रिलीज जारी रखते हैं जो कभी भी खुले मुद्दों को संबोधित नहीं करते हैं। – regretoverflow

+0

दस्तावेज के तहत, बग्गी? एक वाणिज्यिक संस्करण के लिए एक नया संस्करण या भुगतान का प्रयास करें। समाधान देने के बिना शिकायत किसी के लिए सहायक नहीं है। –

+1

रेड 5 छोटी गाड़ी और अनियंत्रित है, कम से कम यह 2 साल पहले था। लेकिन मुझे लगता है कि कुछ भी नहीं बदला है, क्योंकि यह विकास बहुत धीमा है। मुझे लगता है कि आपको कमर्शियल समाधानों की जांच करने की ज़रूरत है, उनमें से एक बहुत सस्ता है, एक महीने के लिए लगभग 50 डॉलर अच्छी स्केलेबिलिटी संभावनाओं (एरलांग में लिखा गया है, जावा नहीं) के साथ। –

1

अब vertx नामक एक मंच है जहां पॉलीगो विकास संभव है। तो मौजूदा सर्वर के साथ आपके सर्वर पक्ष पर red5 जार शामिल किया जा सकता है और एक आरटीएमपी स्ट्रीमिंग सर्वर चला सकता है। क्लाइंट साइड पर आप स्ट्रीम को वापस चलाने के लिए video.js या JW प्लेयर जैसे कुछ प्राप्त कर सकते हैं और फ्लैश फ़ॉल बैक पॉलिसी प्राप्त कर चुकी है। क्लाइंट साइड प्रकाशन, मुझे यकीन नहीं है कि कोई जावास्क्रिप्ट आधारित आरटीएमपी कार्यान्वयन उपलब्ध है या नहीं।

1

WCS फ्लैश, वेबआरटीसी, एसआईपी, वेबसाकेट्स और वाहजा संगत प्रोटोकॉल के लिए एक संकर कार्यान्वयन है: आरटीएसपी, आरटीएमपी।

स्ट्रीम रूपांतरण योजना: enter image description here