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

通过flv.js在网页中拉流进行视频播放

起因是我想在网页中展示流媒体服务器中的视频流。后来了解到flv.js,故作如下知识记录:

FLV (Flash Video) 格式最初是为 Adobe Flash Player 设计的视频容器格式,但随着 HTML5 技术的发展,直接在网页中播放 FLV 文件变得越来越困难。HTTP-FLV 技术通过将 FLV 文件通过 HTTP 协议传输,并在前端使用 JavaScript 解码播放,实现了在不依赖 Flash 的情况下播放 FLV 视频流。

技术优势

  • 兼容性强:支持主流浏览器 (Chrome、Firefox、Safari 等)
  • 低延迟:适合直播场景,延迟通常在 1-3 秒
  • 广泛应用:很多现有的视频平台和直播系统仍在使用 FLV 格式

实现代码

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>HTTP-FLV播放器</title><script src="https://cdn.jsdelivr.net/npm/flv.js@1.6.2/dist/flv.min.js"></script>
</head>
<body><h1>HTTP-FLV播放器</h1><video id="videoElement" controls width="800"></video><div><button id="playButton">点击播放</button></div><p>状态: <span id="status">初始化...</span></p><script>const video = document.getElementById('videoElement');const statusElement = document.getElementById('status');const playButton = document.getElementById('playButton');let flvPlayer = null;if (flvjs.isSupported()) {statusElement.textContent = '准备就绪,请点击播放按钮';playButton.addEventListener('click', () => {if (!flvPlayer) {flvPlayer = flvjs.createPlayer({type: 'flv',url: 'http://127.0.0.1:8080/live/stream.flv',isLive: true});flvPlayer.attachMediaElement(video);flvPlayer.load();flvPlayer.on(flvjs.Events.LOADING_COMPLETE, () => {statusElement.textContent = '加载完成';});flvPlayer.on(flvjs.Events.ERROR, (errType, errDetail) => {statusElement.textContent = `错误: ${errType} - ${errDetail}`;});}video.play().catch(e => {statusElement.textContent = `播放错误: ${e.message}`;});playButton.style.display = 'none';});} else {statusElement.textContent = '浏览器不支持FLV播放';playButton.style.display = 'none';}</script>
</body>
</html>

相关文章:

  • SAP RESTFUL接口方式发布SICF实现全路径
  • 【Vue】组件及组件化, 组件生命周期
  • enumerable 和 configurable 属性详解
  • 海康对接摄像头
  • Docker快速构建并启动Springboot程序,快速发布和上线/
  • 前端基础知识ES6系列 - 03(数组新增了哪些扩展)
  • 论文阅读:强化预训练
  • html打印合同模板
  • 人工智能AI
  • 《零基础读懂新能源汽车》——V2G/电池梯次利用/氢能源生态级技术拆解与商业预言
  • Java八股文——Spring「SpringBoot 篇」
  • 全连接层和卷积层
  • 学习threejs,使用TSL计算粒子鼠标特效
  • 【AI时代速通QT】第一节:C++ Qt 简介与环境安装
  • uniapp 腾讯云 COS 访问控制实战(细粒度权限管理)
  • PHP7+MySQL5.6 雪里开简易预约制访客管理系统V1.0
  • IGBT(绝缘栅双极型晶体管)简介
  • Vue3 + TypeScript + Element Plus 表格行按钮不触发 row-click 事件、不触发勾选行,只执行按钮的 click 事件
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的新零售融合路径研究
  • elementui使用Layout布局-对齐方式
  • 乌鲁木齐新市区建设局网站/视频号直播推广二维码
  • 建设企业网站公/域名注册商
  • 江苏宜安建设有限公司网站/搜索引擎优化的步骤
  • 做彩平的材质网站/全球最大的中文搜索引擎
  • WordPress腾讯云短信插件/seo站内优化最主要的是什么
  • 黄村网站建设一条龙/免费下载百度并安装