欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue實(shí)現(xiàn)監(jiān)控視頻直播的示例代碼

 更新時(shí)間:2022年05月15日 09:09:06   作者:踏行JAVA  
本文主要介紹了vue實(shí)現(xiàn)監(jiān)控視頻直播的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

要想使用videojs我們勢(shì)必是需要安裝videojs的, 而且在生產(chǎn)環(huán)境中我們也需要依賴它, 所以如下

npm: ?npm install video.js -S
npm install videojs-flash videojs-contrib-hls -S

我們打開Vue工程中的主入口main.js進(jìn)行引入

// 引入videojs
import Video from 'video.js';
import 'video.js/dist/video-js.css';
Vue.prototype.$video = Video; 
import hls from 'videojs-contrib-hls';
Vue.use(hls); // 要播放hls流

創(chuàng)建監(jiān)控視頻九宮格

<template>
? <div class="cell">

? ? <div class="cell-player">
? ? ? <div :class="cellClass(i)" v-for="i in cellCount" :key="i">
? ? ? ? <playVideo :video="videoInfo[i]" v-if="cellCount != 6"></playVideo>
? ? ? ? <playVideo :video="videoInfo[i]" v-if="cellCount == 6 && i != 2 && i != 3"></playVideo>
? ? ? ? <template v-if="cellCount == 6 && i == 2">
? ? ? ? ? <div class="cell-player-6-2-cell">
? ? ? ? ? ? <playVideo :video="videoInfo[i]"></playVideo>
? ? ? ? ? ? <playVideo :video="videoInfo[++i]"></playVideo>
? ? ? ? ? </div>
? ? ? ? </template>
? ? ? </div>
? ? </div>
? ? <div class="cell-tool">
? ? ? <div class="bk-button-group">
<!-- ? ? ? ?<el-button @click="cellCount = 1" size="small">1</el-button>-->
? ? ? ? <el-button @click="cellCount = 4" size="small">4</el-button>
<!-- ? ? ? ?<el-button @click="cellCount = 6" size="small">6</el-button>-->
? ? ? ? <el-button @click="cellCount = 9" size="small">9</el-button>
<!-- ? ? ? ?<el-button @click="cellCount = 16" size="small">16</el-button>-->
? ? ? </div>
? ? </div>
? </div>
</template>

<script>
? import playVideo from '@/views/test/playVideo'

? export default {
? ? name: 'dashboard',
? ? components: {
? ? ? playVideo
? ? },
? ? data() {
? ? ? return {
? ? ? ? videoInfo: [
? ? ? ? ? {url: "", index: 0, name: "測(cè)試1"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a72s5d84ded3180d81.m3u8", index: 1, name: "測(cè)試1"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a725sd84ded3180d81.m3u8", index: 2, name: "測(cè)試2"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a7s25d84ded3180d81.m3u8", index: 3, name: "測(cè)試3"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/b27fa374e9d749ddb22bs4a12e843a3131.m3u8", index: 10, name: "測(cè)試4"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a7s2s5d84ded3180d8.m3u8", index: 4, name: "測(cè)試5"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a725sd84ded3180d8.m3u8", index: 5, name: "測(cè)試6"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a725sd84ded31280d8.m3u8", index: 6, name: "測(cè)試7"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a725sd84ded33180d8.m3u8", index: 7, name: "測(cè)試8"},
? ? ? ? ? {url: "http://hls01open.ys7.com/openlive/699a3134f0864d81a725sd84ded31480d8.m3u8", index: 8, name: "測(cè)試9"},


? ? ? ? ],
? ? ? ? cellCount: 9
? ? ? }
? ? },
? ? methods: {},
? ? computed: {
? ? ? cellClass() {
? ? ? ? return function (index) {
? ? ? ? ? switch (this.cellCount) {
? ? ? ? ? ? case 1:
? ? ? ? ? ? ? return ['cell-player-1']
? ? ? ? ? ? case 4:
? ? ? ? ? ? ? return ['cell-player-4']
? ? ? ? ? ? case 6:
? ? ? ? ? ? ? if (index == 1)
? ? ? ? ? ? ? ? return ['cell-player-6-1']
? ? ? ? ? ? ? if (index == 2)
? ? ? ? ? ? ? ? return ['cell-player-6-2']
? ? ? ? ? ? ? if (index == 3)
? ? ? ? ? ? ? ? return ['cell-player-6-none']
? ? ? ? ? ? ? return ['cell-player-6']
? ? ? ? ? ? case 9:
? ? ? ? ? ? ? return ['cell-player-9']
? ? ? ? ? ? case 16:
? ? ? ? ? ? ? return ['cell-player-16']
? ? ? ? ? ? default:
? ? ? ? ? ? ? break;
? ? ? ? ? }
? ? ? ? }
? ? ? },
? ? },
? }
</script>
<style>
? .cell-tool {
? ? height: 40px;
? ? line-height: 30px;
? ? padding: 0 7px;
? }
? .cell-player {
? ? flex: 1;
? ? display: flex;
? ? flex-wrap: wrap;
? ? justify-content: space-between;
? }
? .cell-player-4 {
? ? width: 50%;
? ? height: 50% !important;
? ? box-sizing: border-box;
? }

? .cell-player-1 {
? ? width: 100%;
? ? box-sizing: border-box;
? }

? .cell-player-6-1 {
? ? width: 66.66%;
? ? height: 66.66% !important;
? ? box-sizing: border-box;
? }
? .cell-player-6-2 {
? ? width: 33.33%;
? ? height: 66.66% !important;
? ? box-sizing: border-box;
? ? display: flex;
? ? flex-direction: column;
? }
? .cell-player-6-none {
? ? display: none;
? }
? .cell-player-6-2-cell {
? ? width: 100%;
? ? height: 50% !important;
? ? box-sizing: border-box;
? }
? .cell-player-6 {
? ? width: 33.33%;
? ? height: 33.33% !important;
? ? box-sizing: border-box;
? }
? .cell-player-9 {
? ? width: 33.33%;
? ? height: 33.33% !important;
? ? box-sizing: border-box;
? }
? .cell-player-16 {
? ? width: 25%;
? ? height: 25% !important;
? ? box-sizing: border-box;
? }
? .cell {
? ? display: flex;
? ? flex-direction: column;
? ? height: 100%;
? }

</style>

創(chuàng)建視頻容器

雖然是遍歷視頻容器組件,但是監(jiān)控視頻只播放第一個(gè),所以這里創(chuàng)建視頻容器時(shí),需要保證容器id不一致。

<template>
<div class="player">
? <div>{{video.name}}</div>
? <video :id='"A"+video.index'
? ? ? ? ?style="width: 100%;"
? ? ? ? ?class="video-js vjs-default-skin vjs-big-play-centered ?"> </video>
</div>
</template>

<script>
? export default {
? ? name: "playVideo",
? ? props: {
? ? ? video: {
? ? ? ? url: "",
? ? ? ? index:0,
? ? ? }
? ? },
? ? data() {return {}},
? ? mounted() {
? ? ? this.initVideoPlayer();
? ? },
? ? methods: {
? ? ? initVideoPlayer() {
? ? ? ? var that=this;
? ? ? ? var id="#A"+this.video.index;
? ? ? ? ? const currentInstance = that.$video(document.querySelector(id),{
? ? ? ? ? ? autoplay:true,
? ? ? ? ? ? controls:true
? ? ? ? ? }).src({
? ? ? ? ? ? src: that.video.url,
? ? ? ? ? ? type: 'application/x-mpegURL',
? ? ? ? ? })
? ? ? },
? ? }
? }
</script>
<style scoped>
? .player ?{
? ? background-color: black;
? ? width: 100%;
? ? height: 100%;
? ? border: 1px solid white;
? ? color: white;
? ? text-align: center;
? }
</style>

到此這篇關(guān)于vue實(shí)現(xiàn)監(jiān)控視頻直播的示例代碼的文章就介紹到這了,更多相關(guān)vue 監(jiān)控視頻直播內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue添加請(qǐng)求攔截器及vue-resource 攔截器使用

    Vue添加請(qǐng)求攔截器及vue-resource 攔截器使用

    這篇文章主要介紹了Vue添加請(qǐng)求攔截器及vue-resource 攔截器使用,需要的朋友可以參考下
    2017-11-11
  • vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例

    vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例

    下面小編就為大家分享一篇vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 如何通過(guò)shell腳本自動(dòng)生成vue文件詳解

    如何通過(guò)shell腳本自動(dòng)生成vue文件詳解

    這篇文章主要給大家介紹了關(guān)于如何通過(guò)shell腳本自動(dòng)生成vue文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue實(shí)現(xiàn)文件上傳

    vue實(shí)現(xiàn)文件上傳

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue3.5中響應(yīng)式Props解構(gòu)的編譯原理

    Vue3.5中響應(yīng)式Props解構(gòu)的編譯原理

    在Vue3.5版本中,響應(yīng)式Props的解構(gòu)功能正式轉(zhuǎn)正,該功能允許即使在解構(gòu)后也不丟失響應(yīng)性,文通過(guò)編譯階段的處理,如何保持解構(gòu)后的props變量仍保持響應(yīng)性,編譯過(guò)程中的defineProps宏函數(shù)處理,通過(guò)AST和上下文操作實(shí)現(xiàn)變量替換,從而讓解構(gòu)后的變量在運(yùn)行時(shí)維持響應(yīng)式狀態(tài)
    2024-09-09
  • 詳解vue2和vue3如何定義響應(yīng)式數(shù)據(jù)

    詳解vue2和vue3如何定義響應(yīng)式數(shù)據(jù)

    這篇文章主要是來(lái)和大家一起討論一下vue2和vue3是如何定義響應(yīng)式數(shù)據(jù)的,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2023-11-11
  • vue+php實(shí)現(xiàn)的微博留言功能示例

    vue+php實(shí)現(xiàn)的微博留言功能示例

    這篇文章主要介紹了vue+php實(shí)現(xiàn)的微博留言功能,結(jié)合完整實(shí)例形式分析了vue.js前臺(tái)留言及后臺(tái)php交互功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • springboot+VUE實(shí)現(xiàn)登錄注冊(cè)

    springboot+VUE實(shí)現(xiàn)登錄注冊(cè)

    這篇文章主要為大家詳細(xì)介紹了springboot+VUE實(shí)現(xiàn)登錄注冊(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Vue3?計(jì)算屬性的用法詳解

    Vue3?計(jì)算屬性的用法詳解

    學(xué)過(guò)?vue2?的寶子們應(yīng)該都清楚,計(jì)算屬性這個(gè)東西在項(xiàng)目開發(fā)過(guò)程中使用的還是比較頻繁的,使用頻率相對(duì)來(lái)說(shuō)比較高。本文就來(lái)為大家介紹一下Vue3中計(jì)算屬性的用法,需要的可以參考一下
    2022-07-07
  • 一文詳解Vue3中的setup函數(shù)的用法和原理

    一文詳解Vue3中的setup函數(shù)的用法和原理

    在 Vue3 中,setup 函數(shù)是一個(gè)新引入的概念,它代替了之前版本中的 data、computed、methods 等選項(xiàng),用于設(shè)置組件的初始狀態(tài)和邏輯,本文將主要介紹Setup的基本用法和少量原理
    2024-02-02

最新評(píng)論