0.2.34 • Published 7 months ago

fe-qbee-video-compoennt v0.2.34

Weekly downloads
-
License
-
Repository
-
Last release
7 months ago

fe-qbee-video-compoennt

简介

数据集成-音视频播放组件

仓库地址

https://git.cisdigital.cn/qt/qbee/fe/fe-qbee/fe-qbee-video-compoennt

快速开始

1.安装

npm i fe-qbee-video-compoennt -S

2.1 引入直播播放器

将 public文件夹中的 -jessibuca-pro.js -decoder-pro.js -decoder-pro.wasm -decoder-pro-simd.js -decoder-pro-simd.wasm -decoder-pro-hard.js 都复制出来放在自己项目里的 public 文件中, 其中jessibuca-pro.js 需要在 index.html 中引入

<script src="<%= BASE_URL %>jessibuca-pro.js"></script>
import { CandeaComponent } from 'fe-qbee-video-compoennt';

<CandeaComponent 
    :showOperateBtns="true" 
    :debug="false" 
    :src="url" 
    :decodeFilePath="./decoder-pro.js"
    :getUrlFn="getUrlFn" 
    @changePlayState="changePlayState" 
    @error="getError">
</CandeaComponent>

参数解释: src: 视频播放地址 showOperateBtns:是否展示操作栏 debug: 是否产生日志,生产环境建议设置为false getUrlFn:重连函数 changePlayState:播放器状态 error:播放异常

2.1 引入H5录像回放播放器

将 public文件夹中的 -jessibuca-pro.js -decoder-pro.js -decoder-pro.wasm -decoder-pro-simd.js -decoder-pro-simd.wasm -decoder-pro-hard.js 都复制出来放在自己项目里的 public 文件中, 其中jessibuca-pro.js 需要在 index.html 中引入

<script src="<%= BASE_URL %>jessibuca-pro.js"></script>
import CandeaCloudPlaybackComponentH5 from '../components/playback-player/PlaybackPlayer';

 <CandeaCloudPlaybackComponentH5    ref="video"
                                    :videoData="videoData"
                                    :showOperateBtns="true"
                                    :appKey="appKey"</CandeaCloudPlaybackComponentH5>

参数解释: showOperateBtns:是否展示操作栏 videoData: { deviceCode: '11010122001321001095', //设备编码 recordType: 'TIME', //回放类型 startTime: 1694081875627, //开始时间 endTime: 1694081887894 //结束时间 } appKey: app应用的key值

本地调试配置代理

proxy: { '/candea-app/api': { target: '后端服务地址', progress: false, pathRewrite: { '^/candea-app/api': '/' } } }

------------ 下面不再维护 ------------

# fe-qbee-video-compoennt
## 简介
数据集成-音视频播放组件,包括了srs播放器(h264-pc端),zlm播放器(h264-pc端),ws-flv(h265-pc端/移动端),hls(pc端), httpflv播放器(pc/移动端)。

## 仓库地址
https://git.cisdigital.cn/qt/qbee/fe/fe-qbee/fe-qbee-video-compoennt

## 快速开始
### 1.安装
```bash script
npm i fe-qbee-video-compoennt -S
```

### 2.其他配置

**2.1 引入样式文件**
```
import 'fe-qbee-video-compoennt/dist/VideoComponent.css';
```

2.1 引入 srs播放器

将 public 中的 webrtc-client.js 都复制出来放在自己项目里的 public 文件中, webrtc-client.js 需要在 index.html 中引入

<script src="<%= BASE_URL %>webrtc-client.js"></script>
import { H264VideoComponent } from 'fe-qbee-video-compoennt';

<H264VideoComponent ref="video" :src="currStream.url" :getUrlFn="getUrlFn" @changePlayState="changePlayState" @error="getError"></H264VideoComponent>

参数解释: src: 视频播放地址 getUrlFn:重连函数 changePlayState:播放器状态 error:播放异常

2.3 引入 H265

将 public 中的 jessibuca.js decoder.wasm decoder.js 都复制出来放在自己项目里的 public 文件中, jessibuca.js 需要在 index.html 中引入

<script src="<%= BASE_URL %>jessibuca.js"></script>

import { H265VideoComponent } from 'fe-qbee-video-compoennt'; <H265VideoComponent ref="video" :src="currStream.url" :getUrlFn="getUrlFn" decodeFilePath="./decoder.js" @changePlayState="changePlayState" @error="getError">

2.4 引入 httpflv

import { FLVVideoComponent } from 'fe-qbee-video-compoennt';

<FLVVideoComponent :src="src" ref="video" :getUrlFn="getUrlFn" @changePlayState="changePlayState" @error="getError"></FLVVideoComponent>

参数解释: src: 视频播放地址 getUrlFn:重连函数 changePlayState:播放器状态 error:播放异常

2.5 引入云平台播放器

import { HLSComponent } from 'fe-qbee-video-compoennt';

<HLSComponent:src="src"></HLSComponent>

2.6 引入 zlm播放器

将 public 中的 ZLMRTCClient.js 都复制出来放在自己项目里的 public 文件中, ZLMRTCClient.js 需要在 index.html 中引入

<script src="<%= BASE_URL %>ZLMRTCClient.js"></script>
import { ZLVideoComponent } from 'fe-qbee-video-compoennt';

<ZLVideoComponent ref="video" :src="currStream.url" :getUrlFn="getUrlFn" @changePlayState="changePlayState" @error="getError"></ZLVideoComponent>

参数解释: src: 视频播放地址 getUrlFn:重连函数 changePlayState:播放器状态 error:播放异常 timeout: 超时时间,默认10s

demo参考

<template>
    <div class="test">
        <H265VideoComponent v-if="videoType === 'H265'"
                            :src="src"
                            ref="video"
                            :getUrlFn="getUrlFn"
                            @error="showErrorImg"
                            @changePlayState="changeplayState"></H265VideoComponent>
        <ZLComponent v-if="videoType === 'H264'"
                     :src="src"
                     ref="video"
                     :getUrlFn="getUrlFn"
                     @error="showErrorImg"
                     @changePlayState="changeplayState"></ZLComponent>
        <HttpFlvVideoComponent v-if="videoType === 'FLV'"
                               :src="src"
                               ref="video"
                               :getUrlFn="getUrlFn"></HttpFlvVideoComponent>
        <CloudComponent v-if="videoType === 'Cloud'"
                        :src="src"></CloudComponent>

        <el-input v-model="src"></el-input>
        <el-button @click="aa">点击</el-button>
    </div>
</template>

<script>
// import { H265VideoComponent, H264VideoComponent } from '../../dist/VideoComponent.umd.js';

import H265VideoComponent from '../components/H265/H265Player.vue';
import SRSVideoComponent from '../components/H264/H264Player.vue';
import HttpFlvVideoComponent from '../components/httpflv/HttpFlvPlayer.vue';
import CloudComponent from '../components/cloud-device/Index.vue';
import ZLComponent from '../components/zl-player/ZLPlayer.vue';
export default {
    components: {
        H265VideoComponent,
        SRSVideoComponent,
        CloudComponent,
        HttpFlvVideoComponent,
        ZLComponent
    },
    data() {
        return {
            videoType: '',
            src: '',
            loading: false,
            isError: false,
            tipWord: ''
        };
    },
    async mounted() {
        await this.getUrlFn();
    },
    watch: {
        src: {
            immediate: true,
            handler(val) {
                this.tipWord = !val ? '无连接地址' : '';
            }
        }
    },
    methods: {
        snap() {
            this.$refs.h265Player.screenshot();
        },
        // 判断是H265还是H264 拿到视频url
        getUrlFn() {
            console.log('getUrlFn');
            return new Promise(resolve => {
                setTimeout(() => {
                    this.src = 'webrtc://10.77.24.16:8092/live/SYDez2fx2ruDXxWh';
                    this.videoType = 'H264';
                    resolve();
                }, 1000);
            });
        },
        changeplayState(val) {
            console.log('changeplayState', val);
        },
        showErrorImg(val) {
            this.isError = val;
            this.tipWord = '视频无信号';
        },
        aa() {
            this.$refs.video.play();
        }
    }
};
</script>

<style scoped>
.test {
    width: 50%;
    color: white;
    height: 300px;
}

.test .no-src {
    width: 100%;
    background-color: black;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.no-video {
    width: 100%;
    background-color: black;
    height: 100%;
    display: flex;
    align-items: center;
    color: white;
    justify-content: center;
}
</style>