एचटीएमएल 5 में आरटीएसपी या आरटीपी के माध्यम से स्ट्रीमिंग


150

मैं एक वेब ऐप बना रहा हूं, जो एक सर्वर से http://lscube.org/projects/feng से RTSP / RTP स्ट्रीम वापस खेलना चाहिए ।

HTML5 वीडियो / ऑडियो टैग rtsp या rtp का समर्थन करता है? यदि नहीं, तो सबसे आसान उपाय क्या होगा? शायद एक VLC प्लगइन या ऐसा कुछ करने के लिए नीचे गिरा।


वीडियो टैग आरटीएसपी के साथ "सिर्फ काम" नहीं करता है। और RTSP मूल रूप से किसी भी ब्राउज़र द्वारा कार्यान्वित नहीं किया जाता है जिसे मैं जानता हूं। आपको या तो प्लग की आवश्यकता होगी, क्योंकि आपने पहले ही पता लगा लिया था। या वेबआरटीसी का उपयोग करें, जो क्रोम, और फ़ायरफ़ॉक्स द्वारा मूल रूप से समर्थित है, और आप कुछ वेबटीसीआर तर्क के साथ वीडियो टैग का उपयोग करने में सक्षम होंगे। यदि आप IP कैमरा जैसे स्रोत से स्ट्रीम करने का प्रयास कर रहे हैं, तो RTSP से webRTC पर ट्रांसकोड करने के लिए Wowza (या अपना खुद का लिखें) जैसी स्ट्रीमिंग सेवा का उपयोग करें। यह मेरी सलाह है आपके लिए।
माइकल पी

मैं इस सवाल पूछने के लिए सुझाव है कि मल्टीमीडिया सिस्टम के लिए StackOverflow
हामेद

मुझे लगता है कि आप html5 के साथ स्ट्रीम प्राप्त कर सकते हैं लेकिन आप कहीं स्ट्रीम नहीं कर सकते।
सालीह करागोज़

महान प्रश्न, धन्यवाद। "मेरा मानना ​​है कि हम RTSP का समर्थन नहीं करते, केवल वीडियो-फ्लैश के माध्यम से RTMP।" - यह Video.js मीडिया प्लेयर के मुख्य अनुरक्षक का एक उत्तर है। मैं विषय को फिर से खोजता हूं और इसके लिए एक अच्छा समाधान नहीं खोज सकता।
14 अक्टूबर को 14

HTML वीडियो तत्व में RTSP (या RTP स्ट्रीम जिसे RTSP सेट करता है) को सही ढंग से चलाने के लिए WebRTC RTCPeerConnection का उपयोग करना संभव है। पहले webrtc.live555.com पर एक डेमो था । ट्रिक एक आरटीएसपी सर्वर की खोज करेगी जिसमें आवश्यक WebRTC DTLS और SRTP इमैनेज़्म जोड़े गए हैं।
सिपविज़

जवाबों:


89

तकनीकी रूप से 'हां'

(लेकिन वाकई में नहीं...)

HTML 5 का <video>टैग प्रोटोकॉल अज्ञेय है- इसकी कोई परवाह नहीं है। आप srcURL के भाग के रूप में विशेषता में प्रोटोकॉल रखते हैं । उदाहरण के लिए:

<video src="rtp://myserver.com/path/to/stream">
    Your browser does not support the VIDEO tag and/or RTP streams.
</video>

या हो सकता है

<video src="http://myserver.com:1935/path/to/stream/myPlaylist.m3u8">
    Your browser does not support the VIDEO tag and/or RTP streams.
</video>

उस ने कहा, <video>टैग का कार्यान्वयन ब्राउज़र विशिष्ट है। चूंकि यह HTML 5 के शुरुआती दिन हैं, इसलिए मैं अक्सर समर्थन (या समर्थन की कमी) को बदलने की अपेक्षा करता हूं।

W3C के HTML5 कल्पना ( वीडियो तत्व ) से:

उपयोगकर्ता एजेंट किसी भी वीडियो और ऑडियो कोडेक और कंटेनर प्रारूपों का समर्थन कर सकते हैं


3
अद्यतन : क्रोम में पहली विधि की कोशिश की और मिल गया GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME। ऐसा लगता है कि videoतत्वों पर केवल HTTP [S] योजनाओं की अनुमति है।
यान फोटो

निश्चित रूप से आप कभी भी HTTP पर वीडियो ट्रांसफर नहीं करेंगे और केवल RTP जैसे प्रोटोकॉल का उपयोग करेंगे? यह टीसीपी पर बहुत धीमी गति से होगा ..
5

7
@markmnl कटाक्ष है? (मैं नहीं बता सकता ... मैं इस तरह से भोला हूं।) कुछ वर्षों के लिए वेब पर वीडियो ट्रांसफर करने के लिए HTTP ट्रांसपोर्ट एक प्रभावी तरीका है। Youtube, Netflix, et al। यह दक्षता की बात नहीं है, बल्कि सादगी, फ़ायरवॉल ट्रांसवर्सल, कैश सर्वर मित्रता, आदि है
स्टु थॉम्पसन

Netflix HTTP का उपयोग करके वीडियो स्ट्रीम करता है ?! कोई व्यंग्य सिर्फ वीडियो स्ट्रीम करने का एक अक्षम तरीका नहीं है।
markmnl

6
@markmnl पोस्टरिटी की खातिर, यह ध्यान देने योग्य है कि नेटफ्लिक्स एमएस सिल्वरलाइट के साथ स्ट्रीम करता था, लेकिन थोड़ी देर पहले ही इसे खोद दिया। 2001 के बाद से कोई ऐसा व्यक्ति जो स्ट्रीमिंग में है, मुझे शुरू में एचटीटीपी को देख कर झटका लगा। अब मैं कूल एड पी रहा हूं। कॉर्पोरेट नेटवर्क में, जहां दक्षता मायने रखती है, उद्देश्य-निर्मित प्रोटोकॉल आरटीपी मानक हैं, खासकर जब मल्टीकास्ट जैसी सुविधाओं को वितरित कर सकते हैं।
स्टु थॉम्पसन

55

सवाल की भावना, मुझे लगता है, वास्तव में जवाब नहीं दिया गया था। नहीं, आप अब तक rtsp स्ट्रीम चलाने के लिए वीडियो टैग का उपयोग नहीं कर सकते। क्रोमियम के आदमी के "कभी नहीं" के लिंक के बारे में अन्य उत्तर थोड़ा सा भ्रामक है क्योंकि लिंक किए गए धागे / उत्तर सीधे वीडियो टैग के माध्यम से क्रोम खेलना आरटीएसपी का उल्लेख नहीं है। पूरे जुड़े धागे को पढ़ें, विशेष रूप से बहुत नीचे की टिप्पणी और अन्य धागे के लिंक।

असली जवाब यह है: नहीं, आप केवल html 5 पेज पर एक वीडियो टैग नहीं लगा सकते हैं और rtsp चला सकते हैं। आपको स्ट्रीमिंग वीडियो चलाने के लिए किसी प्रकार की जावास्क्रिप्ट लाइब्रेरी (जब तक आप फ्लैश और सिल्वरलाइट खिलाड़ियों के साथ खेल में नहीं जाना चाहते) का उपयोग करने की आवश्यकता है। {IMHO} html 5 वीडियो चर्चा और कार्यान्वयन की दर पर, मालिकाना वीडियो मानकों के विभिन्न विक्रेताओं को इस कदम को आगे बढ़ाने में मदद करने में कोई दिलचस्पी नहीं है, इसलिए जब तक कि ब्राउज़र निर्माता वीडियो टैग का उपयोग करने का वादा किए गए आसानी की गिनती न करें। किसी भी तरह से समस्या को हल करने के लिए इसे स्वयं पर ले जाएं ... फिर से, संभावना नहीं है। {/ IMHO}


1
अच्छी टिप्पणी गोल्फ। मैं यह भी करना चाहता था कि एलेन सफलता के बिना क्या कर रही है।

31

यह एक पुराना उद्धरण है, लेकिन मुझे इसे हाल ही में स्वयं करना था और मैंने कुछ काम किया है (इसके अलावा मेरी जैसी प्रतिक्रिया से मुझे कुछ समय बचा होगा): मूल रूप से कंटेनर को एचएलएस में बदलने के लिए ffmpeg का उपयोग करें, अधिकांश IP Apps धारा h6464 और कुछ PCM का मूल प्रकार, इसलिए कुछ इस तरह का उपयोग करें:

ffmpeg -v info -i rtsp://ip:port/h264.sdp -c:v copy -c:a copy -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 /var/www/html/test.m3u8

फिर HLS प्लगइन के साथ video.js का उपयोग करें। यह लाइव स्ट्रीम को अच्छी तरह से निभाएगा। दूसरे लिंक के तहत एक jsfiddle उदाहरण भी है)।

नोट: हालांकि यह एक देशी समर्थन नहीं है, इसके लिए उपयोगकर्ता के दृश्यपटल पर कुछ भी अतिरिक्त की आवश्यकता नहीं है।


यह मेरे लिए काम करता है, वीडियोजेस मैं पहले से ही उपयोग कर रहा था और यह एचएलएस प्लगइन लाइव चैनल को एम 3 यू 8 फ़ाइल के अधिकांश यूरल्स के लिए काम करता है, यदि सभी नहीं।
धीरज थेडिजे

खुशी है कि यह मदद की, वहाँ एक विलंबता का थोड़ा और अधिक है, लेकिन ऐसा लगता है कि बहुत मदद नहीं की जा सकती है।
पावेल के।

1
यह कोशिश करें @ केसर:ffmpeg -v info -rtsp_transport tcp -i rtsp://host:port/[sdp] -c:v copy -c:a copy -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 /var/www/html/test.m3u8
पावेल के

1
@Arter मूल रूप से आपको इसे अपने सर्वर (कमांड लाइन से) जैसे लिनक्स बॉक्स या कुछ रिमोट पर चलाने की आवश्यकता है। आपको वर्तमान उपयोगकर्ता के दृष्टिकोण से / var / www / html / फ़ोल्डर (इस उदाहरण में) तक पहुंच की आवश्यकता है। आप इसे LAMP स्टैक या यूनिफ़ॉर्म सर्वर (बहुत अधिक दुबला समाधान) की मदद से खिड़कियों पर करने की कोशिश कर सकते हैं
Pawel K

1
इसने मेरे लिए काम किया। 'hls_wrap' को नवीनतम ffmpeg में चित्रित किया गया है। मैंने इस कमांड लाइन का इस्तेमाल किसी भी व्यक्ति के लिए किया:ffmpeg.exe -fflags nobuffer -rtsp_transport tcp -i rtsp://[SOURCE] -flags +cgop -g 30 -hls_flags delete_segments [DESTINATION]
DanTheMan

19

Chrome समर्थन RTSP स्ट्रीमिंग को कभी लागू नहीं करेगा।

कम से कम, यहां क्रोमियम डेवलपर के शब्दों में :

हम इसके लिए कभी समर्थन नहीं जोड़ने जा रहे हैं


4
हां तकरीबन। Chrome पहले से ही RTSP स्ट्रीमिंग का समर्थन करता है, इसीलिए वह इसके लिए कभी समर्थन नहीं जोड़ने जा रहा है;)
स्टीफन स्टीगर

2
नहीं, आप इसे क्रोम में काम नहीं कर सकते हैं, यह तब काम नहीं कर रहा है जब youtube rtsp लिंक के साथ कोशिश कर रहा है।
IdidntKnewIt

18

HTML5 में तीन स्ट्रीमिंग प्रोटोकॉल / तकनीक हैं:

लाइव स्ट्रीमिंग, कम विलंबता - WebRTC - वेबसोकेट

वीओडी और लाइव स्ट्रीमिंग, उच्च विलंबता - एचएलएस

1. वेबआरटीसी

वास्तव में WebRTC SRTP (सुरक्षित RTP प्रोटोकॉल) है। इस प्रकार हम कह सकते हैं कि वीडियो टैग RTP (SRTP) का अप्रत्यक्ष रूप से WebRTC के माध्यम से समर्थन करता है।

इसलिए अपने क्रोम, फ़ायरफ़ॉक्स या किसी अन्य एचटीएमएल 5 ब्राउज़र पर आरटीपी स्ट्रीम प्राप्त करने के लिए, आपको एक वेबआरटीसी सर्वर की आवश्यकता होगी जो ब्राउज़र को एसआरटीपी स्ट्रीम प्रदान करेगा।

2. वेबसोकेट

यह टीसीपी आधारित है, लेकिन एचएलएस की तुलना में कम विलंबता के साथ है। फिर से आपको एक Websocket सर्वर की आवश्यकता है।

3. एचएलएस

वीओडी (पहले से रिकॉर्ड किए गए वीडियो) के लिए सबसे लोकप्रिय उच्च-विलंबता स्ट्रीमिंग प्रोटोकॉल।


3
वेब सॉकेट का उपयोग करके आप लाइव ऑडियो + वीडियो स्ट्रीम कैसे खेलते हैं? वीडियो के लिए एकमात्र तरीका Broadway.js का उपयोग कर रहा है और यह h264 nal स्ट्रीम का उपयोग करते हुए बहुत हैक है।
गामचे

1
एचएलएस HTTP लाइव स्ट्रीमिंग के लिए खड़ा है, मुझे आश्चर्य है कि एचएलएस का व्यापक रूप से वीओडी के लिए उपयोग किया जाता है लेकिन एलओडी नहीं?
शिनटायरॉयड

1
आप WebSocket से वेब ब्राउज़र में वीडियो नहीं चला सकते। कम से कम बॉक्स से बाहर नहीं।
माइकल IV

-1, वेब सॉकेट के लिए ... लेकिन अन्य सभी कारणों के लिए जो लोग कह रहे हैं। आप पूरी तरह से वेबसोकेट पर डेटा प्राप्त करके एक वीडियो चला सकते हैं। यह ट्राइवियल है, जिसमें MediaSource एक्सटेंशन है। आपको हालांकि नहीं करना चाहिए, क्योंकि आप सीधे HTTP प्रोग्रेसिव का उपयोग कर सकते हैं!
ब्रैड

8

VLC के साथ मैं एक OGG प्रारूप (Vorbis / Theora) में एक HTTP स्ट्रीम में एक लाइव RTSP स्ट्रीम (mpeg4) ट्रांसकोड करने में सक्षम हूं। गुणवत्ता खराब है, लेकिन क्रोम 9 में वीडियो काम करता है। मैंने WEBM (VP8) में एक ट्रांसकोडिंग के साथ परीक्षण भी किया है, लेकिन यह काम करने के लिए प्रतीत नहीं होता है (वीएलसी के पास विकल्प है लेकिन मुझे नहीं पता कि क्या यह वास्तव में अभी के लिए लागू हुआ है। ।)

इस पर एक डॉक्टर के लिए सबसे पहले हमें सूचित करना चाहिए;)


2
"C:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy screen:// :screen-fps=16.000000 :screen-caching=100 :sout=#transcode{vcodec=theo,vb=800,scale=1,width=600,height=480,acodec=mp3}:http{mux=ogg,dst=127.0.0.1:8080/desktop.ogg} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep- यह VLC कमांड है जो आपके इनपुट (जैसे स्क्रीन कैप्चर डिवाइस) को किसी दिए गए आउटपुट स्ट्रीम (जैसे 127.0.0.1:8080/desktop.ogg ) पर स्ट्रीम करता है
Zsolt

1
और फिर आप इसे वीडियो टैग पर एम्बेड कर सकते हैं <video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">:।
Zsolt

2
लेकिन प्रदर्शन दुर्भाग्य से बहुत खराब है और यह बहुत अच्छा होगा अगर यह MP4 कंटेनर के साथ भी किया जा सकता है। AFAIK अधिक ब्राउज़रों का OGG की तुलना में MP4 के लिए समर्थन है।
Zsolt

1
इसने मेरे लिए भी काम किया। मैं HTTP के द्वारा पर प्रोटोकॉल ऑडियो और वीडियो दोनों स्ट्रीमिंग के लिए वीएलसी निर्धारित किया है my_ip:portपता और की तुलना में मैं एचटीएमएल 5 का इस्तेमाल किया <video>इस तरह टैग: <video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5 not supported</video>
patryk.beza

1

HTML 5 वीडियो टैग और rtsp (rtp) स्ट्रीम के बारे में मेरी टिप्पणियां हैं, कि यह केवल konqueror के साथ काम करती है (KDE 4.4.1, फ़ोनॉन-बैकेंड सेट टू GStreamer)। मुझे H.264 / AAC RTSP (RTP) स्ट्रीम वाला केवल वीडियो (कोई ऑडियो) नहीं मिला।

Http://media.esof2010.org/ से स्ट्रीम konqueror (KDE 4.4.1, फ़ोन-बैकएंड टू GStreamer) के साथ काम नहीं किया।


1

Chrome समर्थन RTSP स्ट्रीमिंग को लागू नहीं करता है। WebRTC की जाँच करने के लिए एक महत्वपूर्ण परियोजना।

"वेबआरटीसी एक स्वतंत्र, खुली परियोजना है जो ब्राउज़र और मोबाइल एप्लिकेशन को सरल समय के माध्यम से रीयल-टाइम संचार (आरटीसी) क्षमताओं के साथ प्रदान करता है"

समर्थित ब्राउज़र:

क्रोम, फ़ायरफ़ॉक्स और ओपेरा।

समर्थित मोबाइल प्लेटफ़ॉर्म:

Android और IOS

http://www.webrtc.org/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.