当前位置: 首页 > news >正文

前端播放flv

1 安装依赖

npm install mpegts.js

2 HTML

<el-dialog v-model="dialogVisible" width="45%" :before-close="closeVideoDialog" title="" center append-to-body> <div class="video-container"> <video ref="videoRef" class="video-player" controls muted autoplay playsinline></video> </div> </el-dialog>

3 JS

const dialogVisible = ref(false); const currentFlvUrl = ref(""); const videoRef = ref(null); let mpegtsPlayer = null; const openVideoDialog = async (code) => { let res = await getPreviewUrl({ cameraIndexCode: code }); currentFlvUrl.value = res.data; dialogVisible.value = true; }; watch(dialogVisible, async (val) => { if (val) { await nextTick(); initMpegtsPlayer(currentFlvUrl.value); } else { destroyPlayer(); } }); const initMpegtsPlayer = (url) => { if (!mpegts.isSupported()) { ElMessage.error("当前浏览器不支持视频流播放"); return; } destroyPlayer(); const videoEl = videoRef.value; if (!videoEl) return; mpegtsPlayer = mpegts.createPlayer({ type: "flv", url: url, isLive: true, hasAudio: false, }); mpegtsPlayer.on(mpegts.Events.ERROR, (errType, errDetail, errInfo) => { console.warn("[mpegts] 视频流错误", errType, errDetail, errInfo); ElMessage.error("视频流加载失败"); destroyPlayer(); }); mpegtsPlayer.attachMediaElement(videoEl); mpegtsPlayer.load(); mpegtsPlayer.play().catch((err) => console.log("播放提示", err)); }; const destroyPlayer = () => { if (mpegtsPlayer) { mpegtsPlayer.pause(); mpegtsPlayer.destroy(); mpegtsPlayer = null; } }; const closeVideoDialog = () => { dialogVisible.value = false; }; onUnmounted(() => { destroyPlayer(); });
http://www.jsqmd.com/news/1080284/

相关文章:

  • QKeyMapper:打破设备限制的Windows按键映射神器
  • 从VMware Workstation到vCenter——Web服务器跨平台迁移全路径(含Apache→Nginx无缝切换实录)
  • 多款国产智能体实测对比:深挖自研全栈产品在复杂业务场景下的稳定性护城河
  • 干货合集:盘点2026年最受喜爱的的AI论文平台
  • 【数据库系统原理】第28篇:多粒度封锁与意向锁:锁定层级的效率优化
  • 滴滴地图全自研技术揭秘:为什么它比高德 / 百度 / 腾讯更好用?
  • 动图魔方技术拆解 07:ArkTS 实现 GIF LZW 编码与数据子块写入
  • 【JavaScript】 隐式类型转换
  • 从 RAG 到 Agent-native Knowledge Context Layer
  • 仅限内部技术团队流传的VMware MySQL部署Checklist(含vCPU分配公式、swap禁用策略、vmx参数优化表)
  • Openclaw大模型Minimax-m3 Token plan 9折优惠
  • 一键复刻生产级Python环境,VMware+Ubuntu+Miniconda+VS Code全链路配置指南,手慢无的2024最新实践模板
  • LeetDown:终极iOS降级工具完整使用指南
  • G-Helper完整指南:ROG掌机终极优化与自定义教程
  • 终极数据恢复指南:TestDisk与PhotoRec免费解决方案
  • SubFinder智能字幕搜索工具:三分钟解决影视字幕匹配难题
  • AI意图驱动测试:从脚本维护到智能测试的范式演进
  • 辽宁省营口市和葫芦岛以及福建省福州市和浙江省温州市降雨积水模拟结果出炉扫码即可查看详情
  • Poly Haven Assets Blender插件:原生资产浏览器深度集成架构解析
  • QuickRecorder完整指南:如何用这款免费macOS录屏工具提升你的工作效率
  • 30天自制操作系统:从零开始构建你的第一个操作系统
  • 终极MP4视频修复指南:5分钟拯救你的珍贵记忆
  • GitLab在VMware中性能暴跌90%?揭秘CPU争用、磁盘I/O瓶颈与内存泄漏三大隐形杀手
  • 产业观察:人形机器人从演示展示到实景落地的发展转变
  • 普通人怎么入局Ai,狂揽几W做副业?先学会用APi接入语言和画图模型(小白必看教程)
  • PEL Shimura簇上Kodaira-Spencer映射的计算:从形变理论到模空间几何
  • 公考冲刺阶段还要听课吗?粉笔题库和模考该怎么取舍
  • 今天不配好这5个参数,你的VMware大数据集群永远跑不满——20年运维老兵紧急发布的性能逃生 checklist
  • 【数据库系统原理】第30篇:可串行化调度的理论验证:冲突与视图可串行化的判别
  • 别再手动配环境了!VMware Workstation Pro 17+Python 3.11+Poetry+Docker Desktop一体化部署流程(含SSH密钥自动注入技术)