vue3 EasyMeida RTSP WEB 播放器

1、下载 EasyMedia-1.2.0.jar  提取码: 9uv7

2、进入下载目录运行:java -jar EasyMedia-1.2.0.jar (注:需要安装java环境,该步请自行安装,该服务运行端口为8888,若其它服务占用了该端口,请自行处理再运行)

3、访问:http://localhost:8888,测试流:

        3.1   点击左侧菜单中的:流管理

        3.2   点击新增流,输入摄像头的流地址,备注可空

        3.3   点击左侧菜单演示FLV,右侧[选择流快速填写]下拉选择刚添加的流地址,点击右侧播放

到此,表示流测试成功~

4、在vue3项目中,package.json中的dependencies对象中加入2个包:

        "xgplayer": "^2.18.2",

        "xgplayer-flv.js": "^2.2.1"

        执行 npm i

5、新建player.vue文件:

        

<template>
  <div class="player">
    <div class="video" :id="videoId"></div>
  </div>
</template>
<script setup>
import {ref,defineProps} from 'vue'
import FlvJsPlayer from 'xgplayer-flv.js'
import Player from 'xgplayer'

const props = defineProps({
  src: {
    type: String,
    default: ''
  }
})

const randomId = (len = 9)=> {
    let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let result = ''
    for (let i = 0; i < len; i++) {
        result += str.charAt(Math.floor(Math.random() * str.length))
    }
    return result;
}

const player = ref({})
const isPlay = ref(false)
const videoId = randomId()

//创建播放器
const createPlayer = () => {
  isPlay.value = true
  player.value = new FlvJsPlayer({
    id: videoId,
    url: props.src,
    fitVideoSize: 'auto',
    fluid: true,
    autoplay: true,
    isLive: true,
    playsinline: false,
    screenShot: true,
    whitelist: [''],
    ignores: ['time'],
    closeVideoClick: true,
    errorTips: '<span class="app-error">无视频源</span>',
    customConfig: {
      isClickPlayBack: false
    },
    flvOptionalConfig: {
      enableWorker: true,
      enableStashBuffer: true, //启用缓存
      stashInitialSize: 4096, //缓存大小4m
      lazyLoad: false,
      lazyLoadMaxDuration: 40 * 60,
      autoCleanupSourceBuffer: true,
      autoCleanupMaxBackwardDuration: 35 * 60,
      autoCleanupMinBackwardDuration: 30 * 60
    } //flv.js可选配置项 [flv.js配置](https://github.com/bilibili/flv.js/blob/master/docs/api.md#config)
  })
}

const changeVideo = (url) => {
  player.value.src = url;
}

onMounted(() => {
  createPlayer()
})

onBeforeUnmount(()=>{
  player.value && player.value.destroy();
})
</script>
<style scoped lang="scss">
.player {
  width: 100%;
  height: 100%;
  position: relative;

  .video{
    background: #000;
    width: 100%;
    height: 100% !important;
    padding: 0 !important;
  }
}
</style>

6、父级页面引入:

        <player :src="playerUrl" />

        playerUrl播放地址:

7、预览画面:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue3 可以使用一些现成的流媒体播放器库来实现播放器功能,比如 hls.js、video.js、plyr 等。 以 hls.js 为例,你可以在 Vue3 项目中安装 hls.js 库,并在组件中引用它: ```bash npm install hls.js --save ``` ```javascript import Hls from 'hls.js'; export default { data() { return { video: null }; }, mounted() { this.video = this.$refs.video; if (Hls.isSupported()) { const hls = new Hls(); hls.loadSource('https://example.com/stream.m3u8'); hls.attachMedia(this.video); hls.on(Hls.Events.MANIFEST_PARSED, () => { this.video.play(); }); } else if (this.video.canPlayType('application/vnd.apple.mpegurl')) { this.video.src = 'https://example.com/stream.m3u8'; this.video.addEventListener('loadedmetadata', () => { this.video.play(); }); } } } ``` 在这个例子中,我们使用了 Hls.js 库来实现 HLS 流媒体播放器。在组件的 mounted 钩子函数中,我们先获取到 video 元素的引用,并检查当前浏览器是否支持 HLS 播放。如果支持,我们通过 Hls 实例加载并解析流媒体资源,并将其附加到 video 元素上。当解析完成后,我们通过 Hls 事件监听器开始播放视频。如果不支持 HLS 播放,则直接将视频源地址赋值给 video 元素,并监听 loadedmetadata 事件开始播放视频。 当然,除了 hls.js,你也可以使用其他的流媒体播放器库来实现播放器功能。不同的库可能有不同的 API 和用法,具体可以根据实际情况选择合适的库来使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roffer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值