appemit支持chrome edge等瀏覽器使用VLC 播放rtsp rtmp 解決方案

appemit支持chrome edge等瀏覽器使用VLC 播放rtsp rtmp 解決方案

項目需要實時播放攝像頭rtsp視頻流,瀏覽器不能直接播放,只有通過插件或者轉碼來實現這個需求。

要實現這個目的,可以採用的方案非常得多, 

轉碼
html5 + websocket_rtsp_proxy  轉碼,實現視頻流直播,免費版本兩年未更新。
ffmpeg + ngnix + video,rtsp轉rtmp播放, 經過測試延時普遍在1-3秒
ffmpeg + video,rtsp轉hls播放,延遲略長(2-6秒),這種方式的理論最小延時爲一個ts文件的時長 ,一般爲2-3個ts文件的時長
VLC插件播放 ,可以直接播放RTSP,基於NPAPI,不被最新的 Chrome 和 Firefox 支持
WebRTC,轉碼,RTSP 轉換爲 WebRTC 流,供 web 端顯示
 
 因此,AppEmit提供的本地客戶端的瀏覽器播放RTSP的方案是:
 1 使用webkit內核支持VLC的NPAPI,原有的js代碼直接使用,幾乎沒有延遲
 2 使用vlc的libvlc的API播放,支持多開,幾乎沒有延遲
 3 使用vlc轉碼爲ogg ,瀏覽器video標籤直接播放,延遲約1秒
 4 rtsp轉換爲WebRTC播放,瀏覽器直接播放,延遲800ms

 

appemit支持chrome等瀏覽器使用VLC 播放rtsp rtmp 

方法1 使用NPAPI播放vlc的網頁插件

HTML5的可以支持RTMP 但是無法播放RTSP,flash也止步於RTMP,最後同事推薦了個開源的好東東 VLC ,請教谷歌大神之後,這貨果然可以用來讓各瀏覽器(IE activex方式,谷歌、FF)實現播放RTSP視頻流,那真是極好的~~ 廢話不多說了附上參考文檔和案例,大家自己看吧。

視頻是用的海康網絡攝像頭(支持RTSP,標準H.264 RTP封裝的設備),可以通過 rtsp://admin:[email protected]:81/h264/ch1/main/av_stream  對攝像頭進行讀取RSTP流。在谷歌瀏覽器下實現web顯示實時監控畫面步驟:

1. 下載vlc -  http://www.videolan.org/vlc/  開源的好東西,並安裝(本人測試系統爲WIN8.1 64bit 下載32bit的就可以,XP也沒問題);

2. 安裝,並勾選Mozila支持;

3. 實時播放代碼如下

 

代碼中的具體參數含義,大家可以移步這裏:

https://wiki.videolan.org/Documentation:WebPlugin/

說明文檔很詳細,可以使用js進行各種操作,修改視頻地址、建立播放列表、暫停、播放、音量控制等。

但是最新版本的chrome firefox已經不支持NPAPI。

Appemit可以解決此問題,支持最新版本的chrome  360 IE  edge  firefox QQ 等瀏覽器打開vlc插件,播放rtsp rtmp.

使用 webkit 網頁的 vlc 插件直接打開 Rtsp 流,可以使用 npvlc.dll 即 NPAPI 技術 或者 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轉碼爲ogg ,瀏覽器video標籤直接播放,延遲約1秒

使用 Vlc 提供服務,轉化編碼,有延遲,適用精度要求不高的場所,這樣只是使用了後臺服 務而沒有插件。 見案例 demo\htmlDemo\rtsp_ogg.html

舉例:將 mp4 轉化爲 rtsp(如果有 rtsp 直接使用),再將 rtsp 轉化爲 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轉換爲WebRTC播放,瀏覽器直接播放,延遲800ms

只能開播放一個 RTSP,能切換。 將 RTSP 轉爲 webRTC,,適用延遲精度要求較高的場所,這樣只是使用了 webRTC 後臺服務 而沒有瀏覽器插件。 見案例 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

網址   http://www.appemit.com

Github  https://github.com/appemit/appemit

Email聯繫 appemit(at)appemit.com  

 內容分發下載地址    github下載地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章