ฉันสร้าง app เว็บที่ควรเล่นกระแส RTSP / RTP จากเซิร์ฟเวอร์http://lscube.org/projects/feng
แท็กวิดีโอ / เสียง HTML5 สนับสนุน rtsp หรือ rtp หรือไม่ ถ้าไม่ทางออกที่ง่ายที่สุดคืออะไร อาจปล่อยลงปลั๊กอิน VLC หรืออะไรทำนองนั้น
ฉันสร้าง app เว็บที่ควรเล่นกระแส RTSP / RTP จากเซิร์ฟเวอร์http://lscube.org/projects/feng
แท็กวิดีโอ / เสียง HTML5 สนับสนุน rtsp หรือ rtp หรือไม่ ถ้าไม่ทางออกที่ง่ายที่สุดคืออะไร อาจปล่อยลงปลั๊กอิน VLC หรืออะไรทำนองนั้น
คำตอบ:
(แต่ไม่ใช่จริงๆ ... )
<video>
แท็กของ HTML 5 เป็นผู้ไม่เชื่อเรื่องโปรโตคอล - มันไม่สนใจ คุณวางโปรโตคอลในsrc
แอตทริบิวต์เป็นส่วนหนึ่งของ URL เช่น:
<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 ฉันคาดว่าการสนับสนุนที่เปลี่ยนแปลงบ่อยครั้ง (หรือขาดการสนับสนุน)
จากสเป็ค HTML5 ของ W3C ( องค์ประกอบวิดีโอ ):
ตัวแทนผู้ใช้อาจรองรับตัวแปลงสัญญาณวิดีโอและเสียงและรูปแบบคอนเทนเนอร์
GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME
พยายามวิธีแรกในโครเมี่ยมและได้ ดูเหมือนว่าจะใช้ได้เฉพาะโครงร่าง HTTP [S] video
เท่านั้น
ฉันคิดว่าวิญญาณของคำถามนั้นยังไม่ได้รับคำตอบอย่างแท้จริง ไม่คุณไม่สามารถใช้แท็กวิดีโอเพื่อเล่นสตรีม rtsp ได้ในตอนนี้ คำตอบอื่น ๆ เกี่ยวกับลิงก์ไปยัง "ไม่เคย" ของ Chromium เป็นเรื่องเข้าใจผิดเล็กน้อยเนื่องจากการเชื่อมโยงเธรด / คำตอบไม่ได้อ้างอิงโดยตรงกับ Chrome ที่กำลังเล่น rtsp ผ่านแท็กวิดีโอ อ่านเธรดที่ลิงก์ทั้งหมดโดยเฉพาะความคิดเห็นที่ด้านล่างสุดและลิงก์ไปยังเธรดอื่น
คำตอบที่แท้จริงคือ: ไม่คุณไม่สามารถใส่แท็กวิดีโอในหน้า html 5 และเล่น rtsp คุณต้องใช้ไลบรารี Javascript บางประเภท (เว้นแต่ว่าคุณต้องการเล่นสิ่งที่มีผู้เล่น flash และ silverlight) เพื่อเล่นวิดีโอสตรีมมิ่ง {IMHO} อัตราการสนทนาวิดีโอและ html 5 กำลังดำเนินไปผู้จำหน่ายวิดีโอมาตรฐานต่าง ๆ ไม่สนใจที่จะช่วยให้ก้าวไปข้างหน้านี้ดังนั้นอย่านับการใช้แท็กวิดีโอที่สะดวกตามสัญญาเว้นแต่ผู้สร้างเบราว์เซอร์ ลองคิดดูว่าจะแก้ปัญหาอย่างไร ... อีกครั้งไม่น่าเป็นไปได้ {/ IMHO}
นี่คือ qustion เก่า แต่ฉันต้องทำด้วยตัวเองเมื่อเร็ว ๆ นี้และประสบความสำเร็จบางอย่างทำงาน (นอกเหนือจากการตอบสนองเช่นฉันจะช่วยฉันบางเวลา): โดยทั่วไปใช้ ffmpeg เพื่อเปลี่ยนคอนเทนเนอร์เป็น HLS กระแส IPCams ส่วนใหญ่ h264 และบางส่วน 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
จากนั้นใช้video.jsกับปลั๊กอิน HLSซึ่งจะเล่นสตรีมสดเป็นอย่างดีนอกจากนี้ยังมีตัวอย่าง jsfiddle ภายใต้ลิงก์ที่สอง)
หมายเหตุ: แม้ว่านี่จะไม่ใช่การสนับสนุนแบบดั้งเดิม แต่ก็ไม่จำเป็นต้องมีอะไรเพิ่มเติมในส่วนหน้าของผู้ใช้
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
ffmpeg.exe -fflags nobuffer -rtsp_transport tcp -i rtsp://[SOURCE] -flags +cgop -g 30 -hls_flags delete_segments [DESTINATION]
Chrome จะไม่ใช้การสนับสนุน RTSP สตรีมมิง
อย่างน้อยในคำพูดของนักพัฒนา Chromium ที่นี่ :
เราจะไม่เพิ่มการสนับสนุนสำหรับสิ่งนี้
มีโปรโตคอล / เทคโนโลยีการสตรีมสามอย่างใน HTML5:
สตรีมมิงสด, เวลาแฝงต่ำ - WebRTC - Websocket
VOD และสตรีมสด, เวลาในการตอบสนองสูง - HLS
1. WebRTC
ในความเป็นจริง WebRTC เป็น SRTP (โปรโตคอล RTP ที่ปลอดภัย) ดังนั้นเราสามารถพูดได้ว่าแท็กวิดีโอรองรับ RTP (SRTP) ทางอ้อมผ่าน WebRTC
ดังนั้นเพื่อรับสตรีม RTP ใน Chrome, Firefox หรือเบราว์เซอร์ HTML5 อื่นคุณต้องมีเซิร์ฟเวอร์ WebRTC ซึ่งจะส่งสตรีม SRTP ไปยังเบราว์เซอร์
2. Websocket
มันใช้ TCP แต่มีความหน่วงแฝงต่ำกว่า HLS คุณต้องการเซิร์ฟเวอร์ Websocket อีกครั้ง
3. HLS
โปรโตคอลสตรีมมิ่งความล่าช้าสูงที่นิยมมากที่สุดสำหรับ VOD (วิดีโอที่บันทึกไว้ล่วงหน้า)
ด้วย VLC ฉันสามารถแปลงรหัสสตรีมสด RTSP (mpeg4) เป็นสตรีม HTTP ในรูปแบบ OGG (Vorbis / Theora) คุณภาพไม่ดี แต่วิดีโอทำงานใน Chrome 9 ฉันได้ทดสอบด้วย trancoding ใน WEBM (VP8) แต่ดูเหมือนจะไม่ทำงาน (VLC มีตัวเลือก แต่ฉันไม่รู้ว่ามันใช้งานจริงหรือไม่ในตอนนี้ .)
คนแรกที่มีเอกสารเกี่ยวกับเรื่องนี้ควรแจ้งให้เราทราบ;)
"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 )
<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">
และจากนั้นคุณสามารถฝังนี้ในแท็กวิดีโอ:
my_ip:port
ที่อยู่และกว่าที่ฉันใช้ HTML5 แท็กเช่นนี้<video>
<video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5 not supported</video>
ข้อสังเกตของฉันเกี่ยวกับแท็กวิดีโอ HTML 5 และสตรีม rtsp (rtp) นั้นใช้ได้เฉพาะกับ Konqueror (KDE 4.4.1, Phonon-backend ที่ตั้งค่าเป็น GStreamer) ฉันมีเฉพาะวิดีโอ (ไม่มีเสียง) ด้วยสตรีม H.264 / AAC RTSP (RTP)
สตรีมจากhttp://media.esof2010.org/ไม่ทำงานกับ konqueror (KDE 4.4.1 ชุดแบ็กเอนด์ Phonon เป็น GStreamer)
Chrome ไม่ได้ใช้การสนับสนุนการสตรีม RTSP โครงการที่สำคัญในการตรวจสอบ WebRTC
"WebRTC เป็นโครงการเปิดฟรีที่ให้บริการเบราว์เซอร์และแอปพลิเคชั่นมือถือที่มีความสามารถในการสื่อสารแบบเรียลไทม์ (RTC) ผ่าน API แบบง่าย"
เบราว์เซอร์ที่รองรับ:
Chrome, Firefox และ Opera
แพลตฟอร์มมือถือที่รองรับ:
Android และ IOS