海康威視&螢石攝像頭直播/監(jiān)控模式Vue開發(fā)

一访敌、設備激活(PC工具)

激活方式比較多,這里只說一下PC工具激活

1.1 PC激活工具下載安裝

激活之前請保證攝像頭和電腦在同一局域網下衣盾,進入官網

核峦康威視官網:https://www.hikvision.com/
導航:服務與支持》工具軟件》Hikvision Tools(含SADP、錄像容量計算等工具)》下載
下載地址:https://www.hikvision.com/cn/download_more_393.html

1.png

下載完成后進行軟件安裝


1.png
1.2 設備激活

打開軟件會自動搜索局域網內的所有設備势决,因為我這里已經全部激活迅涮,選中未激活狀態(tài)的設備,右邊就會提示設置管理員密碼并激活徽龟,如果一次不成功叮姑,退出工具,重新打開再激活据悔。


Inked1_LI.jpg

二传透、帳號注冊 & 添加設備 & 創(chuàng)建應用

2.1 帳號注冊

注冊螢石開放平臺賬號:https://open.ys7.com/view/register/register.html

2.1 添加設備(PC)

進入開發(fā)者服務:https://open.ys7.com/console/device.html

開發(fā)者服務》我的資源》我的設備》添加設備
輸入序列號和驗證碼,其中序列號在機身標簽上极颓,螢石設備的驗證碼在設備機身上朱盐,海康設備驗證碼是在激活設備時自己自定義的菠隆。

手機APP添加設備參考官方教程:https://open.ys7.com/bbs/article/10

3.1 創(chuàng)建應用

進入開發(fā)者服務:https://open.ys7.com/console/device.html

開發(fā)者服務》我的應用
創(chuàng)建好應用后兵琳,就可以獲得應用密鑰


1.png

一定要保存好AppKey和Secret狂秘,因為代碼中要通過這兩個獲取AccessToken,然后再用AccessToken獲取賬戶內的設備信息

三躯肌、Vue項目引用

3.1 下載依賴文件UIKit.js

https://open.ys7.com/mobile/download.html

1.png

解壓縮之后者春,把ezuikit.js拷貝在項目中

3.2 Vue引入和實現(xiàn)代碼:

項目使用@vue/cli 4.0.5搭建

template

<div class="hello">

        <h1>螢石視頻監(jiān)控應用于Vue實踐</h1>

        <a-tabs defaultActiveKey="1">
            <a-tab-pane tab="直播模式" key="1">
                <div>
                    <video id="myPlayer" width="600" height="400" autoplay :src="liveRideo.rtmpHd || ''"></video>
                    <p>設備編號:{{liveRideo.deviceSerial || ''}}</p>
                    <p>設備名稱:{{liveRideo.deviceName || ''}}</p>
                    <p>播放地址:{{liveRideo.rtmpHd || ''}}</p>
                </div>
            </a-tab-pane>
            <a-tab-pane tab="監(jiān)控模式" key="2" forceRender>
                <div>
                    <div style="margin-bottom:15px;">
                        選擇日期:
                        <a-date-picker @change="dateChange" :defaultValue="dateDefaultValue" />
                        選擇開始時間:
                        <a-time-picker @change="timeChange" :defaultValue='timeDefaultValue' />
                        <a-button @click="getMonitor">查看</a-button>
                    </div>
                    <div>播放地址:{{this.SplMonitorUrl(this.MonitorParam)}}</div>
                    <div>
                        <iframe :src="MonitorUrl" width="600" height="400" id="ysOpenDevice" allowfullscreen>
                        </iframe>
                    </div>

                </div>
            </a-tab-pane>
        </a-tabs>

    </div>

script

import "jquery"
import "../utils/ezuikit.js"  //根據自己的路徑引入上面下載的ezuikit.js
import axios from "axios"  //vue的請求使用 axios
import Qs from 'qs'  //axios自帶的依賴,用來轉換字符串
import moment from "moment"  //moment時間組件清女,用來選擇觀看的回放時間

export default {
    name: 'HelloWorld',
    data() {
        return {
            accessToken: "",
            // 當前的設備 包括編號钱烟、播放地址等信息
            liveRideo: {},
            // 監(jiān)控地址
            MonitorUrl: "",
            beginDate: `${moment().format('YYYYMMDD')}000000`,
            endDate: `${moment().format('YYYYMMDD')}235959`,
            //監(jiān)控地址參數(shù)
            MonitorParam: {
                url: "",  //播放地址其中包含了設備序列號
                autoplay: "1",  //1-開啟自動播放,未顯示字段-關閉自動播放
                audio: "1",  //1-開啟音頻嫡丙,未顯示字段-關閉音頻
                accessToken: "",  //訪問令牌拴袭,播放監(jiān)控地址的必要參數(shù)
                begin: `${moment().format('YYYYMMDD')}000000`,  //開始時間
                end: `${moment().format('YYYYMMDD')}235959`,  //結束時間
                templete: "2",  //0極簡版 1標準版 2安防版
            },
            // 選擇回放的默認日期 date
            dateDefaultValue: moment(moment(), 'YYYY/MM/DD HH'),
            // 選擇回放的默認時間 time
            timeDefaultValue: moment('00:00:00', 'HH:mm:ss'),
        }
    },
    methods: {
        // 獲取直播視頻地址
        async getVideoSrc() {
            /**
             * 獲取accessToken
             * @appKey * 
             * @appSecret *
             * appKey & appSecret => getURL:https://open.ys7.com/console/application.html
             * 注:Content-Type 必須為 application/x-www-form-urlencoded 否則獲取不到值
             */
            let accessToken = await axios({
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                method: 'POST',
                url: 'https://open.ys7.com/api/lapp/token/get',
                data: Qs.stringify({  //將對象轉換為JSON字符串
                    // 上面在開發(fā)平臺創(chuàng)建應用的 appKey & appSecret
                    appKey: '**********************************',
                    appSecret: '**********************************'
                })
            }).then(res => {
                console.log(res)
                if (res.status == 200) {
                    return res.data.data.accessToken
                }
            })
            // console.log(accessToken)

            this.accessToken = accessToken
            this.MonitorParam.accessToken = accessToken

            /**
             * 獲取設備列表 & 播放的URL
             * @accessToken * 
             * @pageStart 起始位置
             * @pageSize 每頁條數(shù)
             * 注:Content-Type 必須為 application/x-www-form-urlencoded 否則獲取不到值
             */
            let liveRideo = await axios({
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                method: 'POST',
                url: 'https://open.ys7.com/api/lapp/live/video/list',
                data: Qs.stringify({  //將對象轉換為JSON字符串
                    accessToken: accessToken,
                    pageStart: 0,
                    pageSize: 10
                })
            }).then(res => {
                console.log(res)
                if (res.status == 200) {
                    return res.data.data[0]
                }
            })

            this.liveRideo = liveRideo
            this.MonitorParam.url = `ezopen://open.ys7.com/${liveRideo.deviceSerial || ''}/1.rec`

            // 等所有組件加載完畢后再執(zhí)行
            this.$nextTick(function () {
                var player = new EZUIPlayer('myPlayer')
                // player.play()
            })

            // console.log(this.MonitorParam)
            // 獲取監(jiān)控(可回放)視頻地址
            this.getVideoMonitorSrc(this.SplMonitorUrl(this.MonitorParam))
        },
        // 獲取監(jiān)控(可回放)視頻地址
        getVideoMonitorSrc(url) {
            // 拼接監(jiān)控地址
            this.MonitorUrl = url
            this.$nextTick(function () {
                /* 獲取播放器元素 */
                var iframeWindow = document.getElementById('ysOpenDevice').contentWindow;
            })
        },
        // 拼接監(jiān)控地址
        SplMonitorUrl(...param) {
            let obj = {}
            Object.assign(obj, ...param);
            let url = "https://open.ys7.com/ezopen/h5/iframe_se?"
            for (let item in obj) {
                url += `${item}=${obj[item]}&`
            }
            return url.substr(0, url.length - 1);
        },
        // 選擇日期
        dateChange(date) {
            let mydate = moment(date).format("YYYYMMDD")
            this.MonitorParam.begin = `${mydate}000000`
            this.MonitorParam.end = `${mydate}235959`
        },
        // 選擇時間
        timeChange(time) {
            console.log(time)
            let mytime = moment(time).format("HHmmss")
            let b = moment(this.MonitorParam.begin, "YYYYMMDDHHmmss").format("YYYYMMDD")
            this.MonitorParam.begin = `$${mytime}`
            let e = moment(this.MonitorParam.end, "YYYYMMDDHHmmss").format("YYYYMMDD")
            this.MonitorParam.end = `${e}235959`
        },
        // 查看監(jiān)控
        getMonitor() {
            // 獲取監(jiān)控(可回放)視頻地址
            this.getVideoMonitorSrc(this.SplMonitorUrl(this.MonitorParam))
        }
    },
    mounted() {
        // 獲取直播視頻地址
        this.getVideoSrc()

    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末曙博,一起剝皮案震驚了整個濱河市拥刻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌父泳,老刑警劉巖泰佳,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尘吗,居然都是意外死亡逝她,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門睬捶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黔宛,“玉大人,你說我怎么就攤上這事擒贸⊥位危” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵介劫,是天一觀的道長徽惋。 經常有香客問我,道長座韵,這世上最難降的妖魔是什么险绘? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮誉碴,結果婚禮上宦棺,老公的妹妹穿的比我還像新娘。我一直安慰自己黔帕,他們只是感情好代咸,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著成黄,像睡著了一般呐芥。 火紅的嫁衣襯著肌膚如雪逻杖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天思瘟,我揣著相機與錄音荸百,去河邊找鬼。 笑死潮太,一個胖子當著我的面吹牛管搪,可吹牛的內容都是我干的虾攻。 我是一名探鬼主播铡买,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霎箍!你這毒婦竟也來了奇钞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤漂坏,失蹤者是張志新(化名)和其女友劉穎景埃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顶别,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谷徙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驯绎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片完慧。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剩失,靈堂內的尸體忽然破棺而出屈尼,到底是詐尸還是另有隱情,我是刑警寧澤拴孤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布脾歧,位于F島的核電站,受9級特大地震影響演熟,放射性物質發(fā)生泄漏鞭执。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一芒粹、第九天 我趴在偏房一處隱蔽的房頂上張望蚕冬。 院中可真熱鬧,春花似錦是辕、人聲如沸囤热。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旁蔼。三九已至锨苏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棺聊,已是汗流浹背伞租。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留限佩,地道東北人葵诈。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像祟同,于是被迫代替她去往敵國和親作喘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內容