rtmp流媒體協議播放遇到的坑
阿新 • • 發佈:2019-06-15
前提:前端網頁是不能直接播放rtmp或rtsp直播流的。
專案中需要播放工場倉儲物流的實時監控攝像頭。經過各種調研,發現video.min.js+videojs-flash.min.js,再加上瀏覽器安裝了adobe flash播放器,則能完美實時播放rtmp視訊了。
但是用video.min.js也踩了個嚴重的坑,很多Bug都是這樣,不大,但愁人!
上次看一有趣的前端Bug,說一個前端開發人員一個Bug找了一個晚上,竟不知啥原因。描述是這樣,是個地圖專案,卻發現地圖怎麼都出不來,就一個藍色背景,找了好久的原因百思不得姐阿,結果不小心拿水杯時碰到了滑鼠滾輪,發現有了地圖區域,於是再滾再滾,地圖出來了,原來是後端人員隨便給了個定位點(0,0)導致放大定位到了大西洋,全是海,尼瑪真是一片藍!~
言歸正傳,今天遇到的播放rtmp流的坑,所以記錄下來。
上程式碼:
changeRtmpUrl(data: any) { let src = data.src; if(this.player == null){ this.player = window['videojs']('#asn_video', { fill: true }); } //$('#asn_video source').attr('src', src); //this.player.src(src); this.player.src({ type : "rtmp/mp4", src : src }); this.player.load(); this.player.play(); } 我的是動態切換後臺給返回的rtmp流地址,結果怎麼切換不能播放,於是發現,看程式碼紅色部分this.player.src(src);直接設定src函式的值為流地址是不行的,src函式中要設定為object,裡面需要有流地址的src地址源,再加上type屬性則完美呈現。。。 後記:關於流媒體還沒有完,rtmp流建立了還是及時銷燬掉,否則會引起其他頁面的錯誤,有時間了再補充銷燬的文章了,希望對相關問題上的朋友有所幫助。