मैं वर्तमान में फायरवायर के माध्यम से जुड़े 3 मिनी डीवीडी कैमरों से ऑनलाइन स्ट्रीमिंग विकसित करता हूं, जो आपकी आवश्यकताओं के समान है।
त्वरित संकेत: vlc + flowplayer / jw खिलाड़ी
सबसे पहले, दो वीडियो प्रारूप हैं, जिन्हें आप ऑनलाइन स्ट्रीमिंग में उपयोग कर सकते हैं: FLV और h264। FLV ट्रांसकोड करना आसान है, h264 में बेहतर आकार / गुणवत्ता अनुपात है लेकिन ट्रांसकोडिंग अधिक सीपीयू की खपत है। दोनों को वेब पेज में फ़्लैश खिलाड़ियों द्वारा प्रदर्शित किया जा सकता है।
दूसरा, स्ट्रीमिंग इन्फ्रास्ट्रक्चर। चूंकि लैपटॉप से आपका बैंडवाइट सीमित है (युगल एमबीपीएस सबसे ऊपर) आपको अपने सर्वर पर स्ट्रीम प्राप्त करने की आवश्यकता है और वहां इसे ग्राहकों को पुनर्स्थापित करना है। इसलिए स्ट्रीम सर्वर से 1 बार और फिर एन क्लाइंट से प्रवाहित होगी। आपने अपने लैपटॉप के लिए अपने इंटरनेट कनेक्शन का वर्णन नहीं किया है, इसलिए परिदृश्य को दो खंडों में विभाजित किया गया है:
लैपटॉप सार्वजनिक आईपी पते के साथ जुड़ा हुआ है या आप लैपटॉप को NAT पोर्ट कर सकते हैं । यह परिदृश्य बहुत आसान है, क्योंकि आप सर्वर से लैपटॉप को अच्छे और आसान से जोड़ सकते हैं। बड़ा नुकसान यह है, कि आप एक स्थान (एक आईपी पते) से बंधे हैं।
लैपटॉप सार्वजनिक I पते से जुड़ा नहीं है । यह थोड़ा मुश्किल है, लेकिन किसी भी नेटवर्क से काम करेगा जो आपको अपने सर्वर पर एसएसएच करने की अनुमति देगा और पर्याप्त अपलोड (1 एमबीपीएस इसे करना चाहिए)।
उपयोग किए गए परिदृश्य के बावजूद, इन्फ्रास्ट्रक्चर इस तरह दिखेगा
CAMERA - (usb) - LAPTOP - (network, limited upload) - SERVER - (network) - Client 0
- Client 1
- Client 2
- Client N
लैपटॉप से स्ट्रीमिंग
वेब कैमरा से वीडियो कैप्चर करें । मैंने कभी भी स्थानीय रूप से संलग्न वेबकैम से स्ट्रीम पर कब्जा नहीं किया है, लेकिन कई उदाहरण हैं कि इसे V4L के माध्यम से कैसे किया जाए, जैसे:
वेब कैमरा सेटअप । एकमात्र हिस्सा जिसे आपको दिलचस्पी लेनी चाहिए वह है:
laptop$ vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2"
जो वेबकैम से जुड़ने के लिए VLC कमांड का पहला हिस्सा है। अधिक जानकारी के लिए उल्लिखित HOWTO का अनुसरण करें। विशेष रूप से "वीडियो समूह" भाग और सही डिवाइस पथ को / dev / वीडियो और / dev / ऑडियो को देखें। वे आपके लैपटॉप पर अलग हो सकते हैं।
FLV को ट्रांसकोड वीडियो । मैं व्यक्तिगत रूप से FLV का उपयोग करता हूं, क्योंकि यह सीपीयू की कम मांग है। ट्रांसकोड स्ट्रिंग मैं उपयोग यह है:
--sout '#transcode{vcodec=FLV1,vb=512,acodec=mpga,ab=64,samplerate=44100}'
जो एमपीजीए ऑडियो (एमपी 3 मेरे उबंटू में उपलब्ध नहीं है) के साथ वीडियो स्ट्रीम को एफएलवी प्रारूप में ट्रांसकोड करेगा। नमूना किसी तरह अनिवार्य है, यह इसके बिना काम नहीं करेगा। लेकिन आप 22050 की तरह छोटे का चयन कर सकते हैं। यह वीडियो स्ट्रीम 'जैसा है' को ट्रांसकोड करेगा, इसलिए स्केल 1: 1 है। आप चौड़ाई और ऊंचाई पैरामीटर या स्केल पैरामीटर भी जोड़ सकते हैं। VLC प्रलेखन में देखें।
इसे लैपटॉप से स्ट्रीम करें । अब आपको लोकल स्ट्रीम करना होगा, जिस पर सर्वर कनेक्ट होगा:
:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8081/stream.flv}
यह VLC स्ट्रीम को 0.0.0.0:8081/stream.flv से बाँध देगा। पूरा कमांड इस तरह दिखेगा:
laptop$ vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" --sout '#transcode{vcodec=FLV1,vb=512,acodec=mpga,ab=64,samplerate=44100}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8081/stream.flv}'
सर्वर पर पुनर्स्थापित हो रहा है
सर्वर पर स्ट्रीम कैप्चर करें और इसे पुनर्स्थापित करें । फिर से, हम VLC को पकड़ने और स्ट्रीम करने के लिए उपयोग करते हैं। उपयोग इस पोस्ट के शुरुआती समय से बुनियादी ढांचे के परिदृश्य पर आधारित है। जैसा कि मैंने दिखाया, लैपटॉप पर VLC कुछ पोर्ट पर वीडियो स्ट्रीम करता है। इस पोर्ट को सर्वर से एक्सेसेबल होना चाहिए। यदि आपके पास लैपटॉप, या नैट पोर्ट का सार्वजनिक आईपी पता है, तो आप इसे टेलनेट के साथ जांच सकते हैं:
server$ telnet public_ip_address 8081
"कनेक्शन टाइमआउट" को छोड़कर कुछ भी प्रकट होगा, जिसे आप अपने लैपटॉप की स्ट्रीम से कनेक्ट कर सकते हैं। यदि आपके पास सार्वजनिक आईपी पता नहीं है, या आप NAT पोर्ट नहीं कर सकते हैं, तो आपको इसे दूसरे तरीके से करना होगा। आप लैपटॉप से सर्वर तक एसएसएच कर सकते हैं और अपने लैपटॉप पोर्ट को सर्वर से आगे बढ़ा सकते हैं। सही SSH कमांड होगी:
laptop$ ssh your_user@server_ip_address -R 8081:127.0.0.1:8081
यह मैजिक कमांड आपके लैपटॉप पोर्ट 8081, सर्वर पोर्ट 8081 को 'बाइंड' करेगा। इसका मतलब है कि जब आप सर्वर पर 8081 से कनेक्ट होते हैं, तो आप चुपचाप एसएसएच टनल के माध्यम से अपने लैपटॉप पोर्ट 8081 से कनेक्ट हो जाएंगे। कूल, हं? :) तो हम सभी को सरल VLC कनेक्ट और स्ट्रीम करना है:
server$ vlc http://localhost:8081/stream.flv --sout '#std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8082/stream.flv}'
या सार्वजनिक आईपी एड्रेस या नैट पोर्ट के मामले में:
server$ vlc http://public_ip_address:8081/stream.flv --sout '#std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8082/stream.flv}'
लैपटॉप के भाग की तरह, सर्वर पर आपका VLC 8082 पोर्ट करने के लिए बाध्य है। 8082 और 8081 क्यों नहीं? 8081 पहले ही SSH रिमोट द्वारा आगे ले जा चुका है। हम पहले उदाहरण के रूप में ट्रांसकोड भाग का उपयोग क्यों नहीं करते हैं? वीडियो पहले से ही सही प्रारूप में है, इसलिए हमें बस इतना करना है, जितना कि यह है।
परीक्षण । दोनों उदाहरणों में, आप VLC के माध्यम से स्ट्रीम देखकर कार्यक्षमता का परीक्षण कर सकते हैं। आप अपनी स्थानीय स्ट्रीम का परीक्षण कर सकते हैं:
laptop$ vlc http://localhost:8081/stream.flv
और आप अपने सर्वर की स्ट्रीम का परीक्षण कर सकते हैं:
laptop$ vlc http://server_ip_address:8082/stream.flv
दोनों ही मामलों में, आपको अपना वेबकैम इनपुट देखना चाहिए।
वेब पर स्ट्रीम प्रदर्शित करें
वेब पर स्ट्रीम प्रदर्शित करना, जो ज्यादातर मामलों में काम करेगा, फ्लैश प्लेयर के माध्यम से होता है। मैंने दो उत्पादों की कोशिश की, जो गैर-व्यावसायिक उपयोग के लिए स्वतंत्र हैं: जेडडब्ल्यू प्लेयर और फ्लोप्लेयर । मैं फ्लोप्लेयर के साथ रहा, लेकिन मुझे इसका कारण याद नहीं है, शायद प्लगइन्स के कारण (जिसका मैं उपयोग नहीं करता हूं :)) या बेहतर प्रलेखन के कारण।
वेब पेज में वीएलसी से एफएलवी स्ट्रीम को कैसे प्रदर्शित किया जाए: यहां स्ट्रीम वीएलसी टू वेबसाइट विथ एश एंड फ्लैश
समस्या निवारण
ऐसी कई समस्याओं से अवगत होंगे, जो उत्पन्न होंगी। पहली बात, जैसा कि हर चीज में होता है । VLC बहुत ही गपशप कार्यक्रम है, इसलिए यह आपको बताएगा कि समस्या कहां है। वीडियो / ऑडियो डिवाइस का उपयोग करने की अनुमति के साथ समस्या हो सकती है, लापता कोडेक्स, गलत वर्तनी वाले -आउट पैरामीटर, ... iftop
यह देखने के लिए उपयोग करना सीखें कि क्या डेटा वास्तव में नेटवर्क के माध्यम से बहता है, आदि।