艱難的攝像頭視頻web頁面播放之路

海康攝像機(jī)可以提供rtsp協(xié)議,所以第一步就是考慮直接通過瀏覽器播放晾捏,最初找到《谷歌瀏覽器Chrome播放rtsp視頻流解決方案》連接地址:https://yq.aliyun.com/articles/243466墓怀,興奮不已,測試一下得到以下結(jié)果:(此處用的谷歌瀏覽器)

image

最后在《在Chrome上通過vlc插件播放rtsp和rtmp視頻》(地址:https://my.oschina.net/u/1018014/blog/1540179) 知道Chrome只有41版本以前才支持VLC插件意鲸,我當(dāng)前用的瀏覽器版本是版本 83.0.4103.97,已經(jīng)徹底斷了使用vlc插件這條路了。

那就再試試VXG插件https://www.videoexpertsgroup.com/

運(yùn)行VXGdemo 得到了以下提示

PNaCl modules can only be used on the open web (non-app/extension) when the PNaCl Origin Trial is enabled

PNaCl 是(Portable Native Client)

最后查到了這篇文章:PNaCl 再見魁瞪,WebAssembly 你好!惠呼,原來PNaCl也被拋棄了导俘。

https://github.com/1441796624/VXG.Chrome-RTSP-Player項(xiàng)目中看到如下一段話

Google Inc. has permanently banned NPAPI for Chrome browser making legacy media plugins including VLC nonfunctional. VXG Chrome RTSP Player is based on Google’s Native Client (NaCl) and Portable Native Client (PNaCl) architecture.

沒想到VXG步了VLC的后塵,再次放棄VXG剔蹋!

再次找到使用B站(bilibili)開源的flv.js的例子https://github.com/LorinHan/flvjs_test

看似好簡單旅薄,后端node express,前端vue

安裝ffmpeg泣崩,參考文檔https://blog.csdn.net/u013314786/article/details/89682800
解壓
xz -d ffmpeg-4.3-i686-static.tar.xz
tar -xvf ffmpeg-4.3-i686-static.tar
npm離線安裝

下載安裝包:dnf install --downloadonly --downloaddir=/root/video npm

在下載的安裝包目錄下執(zhí)行命令:rpm -Uvh ***.rpm進(jìn)行npm安裝

安裝路徑

image

https://github.com/LorinHan/flvjs_test中提到要安裝依賴包少梁,執(zhí)行以下命令:
npm install express express-ws fluent-ffmpeg websocket-stream -S -D

image

但實(shí)際執(zhí)行node index.js的時候發(fā)現(xiàn)還是缺包,然后就是一個個包的補(bǔ)充矫付,最后下載的包如下

image

此時再執(zhí)行node index.js,express監(jiān)聽起來了凯沪。

image

index.js需要修改的地方,ffmpeg的地址

ffmpeg.setFfmpegPath("/root/video/ffmpeg-4.3-i686-static/ffmpeg");

app.listen(8888);端口可以根據(jù)需要調(diào)整买优。

這部分整理好了以后剩下要做的工作就是采用vue搭建前端環(huán)境妨马。

因?yàn)閷ue不是很熟悉就直接采用https://juejin.im/post/5a7c18d36fb9a0633e51c458文檔中的內(nèi)容搭建一個最簡單的環(huán)境。

首先執(zhí)行vue init webpack videoProject初始化一個項(xiàng)目

然后就是下載flv.js杀赢,執(zhí)行:npm install flv.js -S -D

下載完成后烘跺,為了盡快看到效果我是直接把flv.js/src目錄下的內(nèi)容直接拷貝到我初始化的項(xiàng)目videoProject的src目錄下。將以下代碼直接拷貝到App.vue文件中

    <div>
        <video class="demo-video" ref="player" muted autoplay></video>
    </div>
</template>
<script>
import flvjs from "flv.js";
export default {
    data () {
        return {
          id: "1",
          rtsp: "rtsp://admin:12345@192.168.11.157:554/h264/ch1/main/av_stream",
            player: null
        }
    },
    mounted () {
        if (flvjs.isSupported()) {
            let video = this.$refs.player;
            if (video) {
                this.player = flvjs.createPlayer({
                    type: "flv",
                    isLive: true,
                    url: `ws://localhost:8888/rtsp/${this.id}/?url=${this.rtsp}`
                });
                this.player.attachMediaElement(video);
                try {
                    this.player.load();
                    this.player.play();
                } catch (error) {
                    console.log(error);
                };
            }
        }
    },
    beforeDestroy () {
        this.player.destory();
    }
}
</script>
<style>
    .demo-video {
        max-width: 880px;
        max-height: 660px;
    }
</style>

將rtsp: "rtsp://admin:12345@192.168.11.157:554/h264/ch1/main/av_stream"修改為對應(yīng)自己要播放的攝像頭的rtsp地址脂崔,如果密碼中有特殊字符時需要轉(zhuǎn)義滤淳,如里面包含+號需要轉(zhuǎn)義為%2B。
然后運(yùn)行:PORT=8090 npm run dev脱篙。運(yùn)行我的videoProject娇钱。此處報了兩個錯誤:Expected indentation of 2 spaces but found 4和extra semicolon

對應(yīng)的解決辦法:打開項(xiàng)目中的config目錄下的index.js文件

image

將useEslint的值改成false

image

修改.eslintrc.js文件,增加"indent": ["off", 2],

image
image

參考文檔:

https://blog.csdn.net/zyj0209/article/details/89307987

https://blog.csdn.net/qq_37591637/article/details/100508162

萬事具備绊困,就差運(yùn)行看效果了文搂,走起!

執(zhí)行 node index.js秤朗,起后端服務(wù)

前端執(zhí)行PORT=8090 npm run dev煤蹭。運(yùn)行前端項(xiàng)目

image

訪問http://localhost:8091,視頻出現(xiàn)

image

終于搞定了一個簡單的web頁面播放方式!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硝皂,一起剝皮案震驚了整個濱河市常挚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稽物,老刑警劉巖奄毡,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贝或,居然都是意外死亡吼过,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門咪奖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盗忱,“玉大人,你說我怎么就攤上這事羊赵√说瑁” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵昧捷,是天一觀的道長闲昭。 經(jīng)常有香客問我,道長靡挥,這世上最難降的妖魔是什么汤纸? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮芹血,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楞慈。我一直安慰自己幔烛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布囊蓝。 她就那樣靜靜地躺著饿悬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聚霜。 梳的紋絲不亂的頭發(fā)上狡恬,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音蝎宇,去河邊找鬼弟劲。 笑死,一個胖子當(dāng)著我的面吹牛姥芥,可吹牛的內(nèi)容都是我干的兔乞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼庸追!你這毒婦竟也來了霍骄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤淡溯,失蹤者是張志新(化名)和其女友劉穎读整,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咱娶,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡米间,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了豺总。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片车伞。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喻喳,靈堂內(nèi)的尸體忽然破棺而出另玖,到底是詐尸還是另有隱情,我是刑警寧澤表伦,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布谦去,位于F島的核電站,受9級特大地震影響蹦哼,放射性物質(zhì)發(fā)生泄漏鳄哭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一纲熏、第九天 我趴在偏房一處隱蔽的房頂上張望妆丘。 院中可真熱鬧,春花似錦局劲、人聲如沸勺拣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽药有。三九已至,卻和暖如春苹丸,著一層夾襖步出監(jiān)牢的瞬間愤惰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工赘理, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宦言,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓感憾,卻偏偏與公主長得像蜡励,于是被迫代替她去往敵國和親令花。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容