appemit支持chrome edge等瀏覽器使用VLC 播放rtsp rtmp 解決方案
項目需要實時播放攝像頭rtsp視頻流,瀏覽器不能直接播放窟绷,只有通過插件或者轉(zhuǎn)碼來實現(xiàn)這個需求。
要實現(xiàn)這個目的接奈,可以采用的方案非常得多踢涌,?
轉(zhuǎn)碼
html5 + websocket_rtsp_proxy ?轉(zhuǎn)碼,實現(xiàn)視頻流直播序宦,免費(fèi)版本兩年未更新睁壁。
ffmpeg + ngnix + video,rtsp轉(zhuǎn)rtmp播放, 經(jīng)過測試延時普遍在1-3秒
ffmpeg + video互捌,rtsp轉(zhuǎn)hls播放潘明,延遲略長(2-6秒),這種方式的理論最小延時為一個ts文件的時長 秕噪,一般為2-3個ts文件的時長
VLC插件播放 钳降,可以直接播放RTSP,基于NPAPI腌巾,不被最新的 Chrome 和 Firefox 支持
WebRTC牲阁,轉(zhuǎn)碼,RTSP 轉(zhuǎn)換為 WebRTC 流壤躲,供 web 端顯示
因此,AppEmit提供的本地客戶端的瀏覽器播放RTSP的方案是:
1 使用webkit內(nèi)核支持VLC的NPAPI城菊,原有的js代碼直接使用,幾乎沒有延遲
2 使用vlc的libvlc的API播放碉克,支持多開凌唬,幾乎沒有延遲
3 使用vlc轉(zhuǎn)碼為ogg ,瀏覽器video標(biāo)簽直接播放,延遲約1秒
4 rtsp轉(zhuǎn)換為WebRTC播放漏麦,瀏覽器直接播放客税,延遲800ms
appemit支持chrome等瀏覽器使用VLC 播放rtsp rtmp?
方法1 使用NPAPI播放vlc的網(wǎng)頁插件
HTML5的可以支持RTMP 但是無法播放RTSP,flash也止步于RTMP撕贞,最后同事推薦了個開源的好東東 VLC 更耻,請教谷歌大神之后,這貨果然可以用來讓各瀏覽器(IE activex方式捏膨,谷歌秧均、FF)實現(xiàn)播放RTSP視頻流,那真是極好的~~ 廢話不多說了附上參考文檔和案例号涯,大家自己看吧目胡。
視頻是用的海康網(wǎng)絡(luò)攝像頭(支持RTSP链快,標(biāo)準(zhǔn)H.264 RTP封裝的設(shè)備)誉己,可以通過?rtsp://admin:12345@192.0.0.64:81/h264/ch1/main/av_stream ?對攝像頭進(jìn)行讀取RSTP流。在谷歌瀏覽器下實現(xiàn)web顯示實時監(jiān)控畫面步驟:
1. 下載vlc - ?http://www.videolan.org/vlc/ ?開源的好東西域蜗,并安裝(本人測試系統(tǒng)為WIN8.1 64bit 下載32bit的就可以巨双,XP也沒問題)噪猾;
2. 安裝,并勾選Mozila支持筑累;
3. 實時播放代碼如下
代碼中的具體參數(shù)含義畏妖,大家可以移步這里:
https://wiki.videolan.org/Documentation:WebPlugin/
說明文檔很詳細(xì),可以使用js進(jìn)行各種操作疼阔,修改視頻地址戒劫、建立播放列表、暫停婆廊、播放迅细、音量控制等。
但是最新版本的chrome firefox已經(jīng)不支持NPAPI淘邻。
Appemit可以解決此問題茵典,支持最新版本的chrome? 360 IE? edge? firefox QQ 等瀏覽器打開vlc插件,播放rtsp rtmp.
使用 webkit 網(wǎng)頁的 vlc 插件直接打開 Rtsp 流宾舅,可以使用 npvlc.dll 即 NPAPI 技術(shù) 或者 axvlc.dll 見案例 demo\htmlDemo\rtsp.html统阿,? {"emit":"open","Obj":"media","AppType":1,"pos":1,"AppId":1, -45- "par":{ "mrl":"rtsp://wowzaec2demo.st reamlock.net/vod/mp4:BigBuckBunny_115k.mov","htmlStr":null,"kernel":2},"pa r0":{"fullscreen":true,"volume":70,"autoplay":true,"controls":true }}
方法2 使用libvlc的插件直接播放
Appemit支持多開,截圖等功能
支持多開筹我, 見案例 demo\htmlDemo\rtsp.html
{"emit":"open","Obj":"libvlc","AppType":1,"pos":1,"AppId":1,"par":{ "mrl":"rtsp://wowzaec2demo.st reamlock.net/vod/mp4:BigBuckBunny_115k.mov","localFile":0},"par0":{"fullscreen":1,"volume":70, "autoplay":1,"controls":0 }}
方法3?使用vlc轉(zhuǎn)碼為ogg ,瀏覽器video標(biāo)簽直接播放扶平,延遲約1秒
使用 Vlc 提供服務(wù),轉(zhuǎn)化編碼蔬蕊,有延遲结澄,適用精度要求不高的場所,這樣只是使用了后臺服 務(wù)而沒有插件岸夯。 見案例 demo\htmlDemo\rtsp_ogg.html
舉例:將 mp4 轉(zhuǎn)化為 rtsp(如果有 rtsp 直接使用),再將 rtsp 轉(zhuǎn)化為 ogg麻献,在 html5 的播放 器播放
{"emit":"open","Obj":"media","AppType":1,"AppId":"AppId_lvcSvr1","AppShow":0,"p ar":{"gui":0,"cmds":["-vvv \"file:///${dir_Cur}/demo/htmlDemo/file/h1.mp4\" --loop --sout \"#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp=r tsp://:8554/vlc}\" ","-vvv \"rtsp://:8554/vlc\" --loop :sout=#transcode{vcodec=theo,vb=800,acodec=vorb,ab=128,channels=2,samplera te=44100}:http{mux=ogg,dst=:8080/stream} :sout-all :sout-keep\" "]}}
方法4 rtsp轉(zhuǎn)換為WebRTC播放,瀏覽器直接播放猜扮,延遲800ms
只能開播放一個 RTSP勉吻,能切換。 將 RTSP 轉(zhuǎn)為 webRTC旅赢,齿桃,適用延遲精度要求較高的場所,這樣只是使用了 webRTC 后臺服務(wù) 而沒有瀏覽器插件鲜漩。 見案例 demo\htmlDemo\rtsp2WebRTC.html
Var ReqPar= {"emit":"open","Obj":"rtsp2webRTC","AppShow":0,"AppFollow":0,"AppRuntime":1,"par": {"webRTC_cfg":webRTC_cfg,"pid":pid,"webRTC_dos":0,"AuthKey":pidAuthKey},"par0":{"f orce":1}}; AE_OpenApp(ReqPar );
程序下載?
程序名稱?? AppEmit.exe
網(wǎng)址http://www.appemit.com
Githubhttps://github.com/appemit/appemit
Email聯(lián)系 appemit(at)appemit.com??