Saya sedang membangun aplikasi web yang harus memutar aliran RTSP / RTP dari server http://lscube.org/projects/feng .
Apakah tag video / audio HTML5 mendukung rtsp atau rtp? Jika tidak, apa solusi termudah? Mungkin drop down ke plugin VLC atau sesuatu seperti itu.
Jawaban:
Secara teknis 'Ya'
(tapi tidak juga ...)
Tag HTML 5
<video>
adalah protokol agnostik — tidak peduli. Anda menempatkan protokol disrc
atribut sebagai bagian dari URL. Misalnya:atau mungkin
Yang mengatakan, implementasi
<video>
tag adalah spesifik browser. Karena ini adalah hari-hari awal untuk HTML 5, saya berharap sering mengubah dukungan (atau kurangnya dukungan).Dari spec HTML5 W3C ( Elemen video ):
sumber
GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME
. Tampaknya hanya skema HTTP [S] yang diizinkan padavideo
elemen.Semangat pertanyaan, saya pikir, tidak benar-benar dijawab. Tidak, Anda tidak dapat menggunakan tag video untuk memutar stream rtsp seperti yang sekarang. Jawaban lain mengenai tautan ke Chromium "tidak pernah" agak menyesatkan karena utas / jawaban yang tertaut tidak secara langsung merujuk ke Chrome yang memainkan rtsp melalui tag video. Baca seluruh utas tertaut, terutama komentar di bagian paling bawah dan tautan ke utas lainnya.
Jawaban sebenarnya adalah ini: Tidak, Anda tidak bisa hanya memasang tag video pada halaman html 5 dan memutar rtsp. Anda perlu menggunakan semacam perpustakaan Javascript (kecuali jika Anda ingin bermain-main dengan pemutar flash dan silverlight) untuk memutar video streaming. {IMHO} Pada tingkat diskusi video dan implementasi html 5 berjalan, berbagai vendor standar video berpemilik tidak tertarik untuk membantu ini bergerak maju jadi jangan menghitung kemudahan penggunaan tag video yang dijanjikan kecuali pembuat browser bawa sendiri untuk memecahkan masalah ... sekali lagi, tidak mungkin. {/ IMHO}
sumber
Ini adalah qustion lama, tetapi saya harus melakukannya sendiri baru-baru ini dan saya mencapai sesuatu yang berhasil (selain itu tanggapan seperti milik saya akan menghemat waktu): Pada dasarnya gunakan ffmpeg untuk mengubah wadah ke HLS, sebagian besar aliran IPCams h264 dan beberapa tipe dasar PCM, jadi gunakan sesuatu seperti itu:
Kemudian gunakan video.js dengan plugin HLS. Ini akan memainkan streaming langsung dengan baik. Ada juga contoh jsfiddle di bawah tautan kedua).
Catatan: meskipun ini bukan dukungan asli tetapi tidak memerlukan tambahan apa pun di antarmuka pengguna.
sumber
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 tidak akan pernah menerapkan dukungan streaming RTSP.
Paling tidak, dalam kata-kata pengembang Chromium di sini :
sumber
Ada tiga protokol / teknologi streaming di HTML5:
Streaming langsung, latensi rendah - WebRTC - Websocket
VOD dan Streaming langsung, latensi tinggi - HLS
1. WebRTC
Sebenarnya WebRTC adalah SRTP (secure RTP protocol). Dengan demikian kita dapat mengatakan bahwa tag video mendukung RTP (SRTP) secara tidak langsung melalui WebRTC.
Karenanya untuk mendapatkan aliran RTP di Chrome, Firefox atau browser HTML5 lainnya, Anda memerlukan server WebRTC yang akan mengirimkan aliran SRTP ke browser.
2. Websocket
Ini berbasis TCP, tetapi dengan latensi lebih rendah dari HLS. Sekali lagi Anda memerlukan server Websocket.
3. HLS
Protokol streaming latensi tinggi yang paling populer untuk VOD (video yang direkam sebelumnya).
sumber
Dengan VLC saya dapat mentranskode aliran RTSP langsung (mpeg4) ke aliran HTTP dalam format OGG (Vorbis / Theora). Kualitasnya buruk tetapi videonya berfungsi di Chrome 9. Saya juga telah menguji dengan trancoding di WEBM (VP8) tetapi sepertinya tidak berfungsi (VLC punya pilihan tetapi saya tidak tahu apakah itu benar-benar diterapkan untuk saat ini. .)
Yang pertama memiliki dokumen tentang ini harus memberi tahu kami;)
sumber
"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
- ini adalah perintah VLC yang mengalirkan input Anda (mis. perangkat screen capture) ke aliran output yang diberikan (mis. 127.0.0.1:8080/desktop.ogg )<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">
.my_ip:port
alamat dan daripada saya menggunakan HTML5<video>
tag seperti ini:<video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5 not supported</video>
.Pengamatan saya mengenai tag video HTML 5 dan stream rtsp (rtp) adalah, bahwa itu hanya bekerja dengan konqueror (KDE 4.4.1, Phonon-backend diatur ke GStreamer). Saya hanya mendapatkan video (tanpa audio) dengan aliran H.264 / AAC RTSP (RTP).
Streaming dari http://media.esof2010.org/ tidak berfungsi dengan konqueror (KDE 4.4.1, Phonon-backend diatur ke GStreamer).
sumber
Chrome tidak menerapkan dukungan streaming RTSP. Proyek penting untuk memeriksanya WebRTC.
"WebRTC adalah proyek terbuka dan gratis yang menyediakan kapabilitas browser dan aplikasi seluler dengan Komunikasi Real-Time (RTC) melalui API sederhana"
Browser yang didukung:
Chrome, Firefox, dan Opera.
Platform Seluler yang didukung:
Android dan iOS
http://www.webrtc.org/
sumber