easyplayer 前端播放器

概要

需求是对接flv视频流,本来打算用b站的flv去做,做出来以后发现延迟高,加载慢,然后查找了一下,找到了这个。 

EasyPlayer.js集播放http-flv, hls, websocket 于一身的H5视频直播/视频点播播放器, 使用简单, 功能强大。

功能说明

  •  支持 MSE H264和H265硬解码;
  •  支持 WebCodec H264和H265硬解码;
  •  支持 WASM H264和H265硬解码/软解码;
  •  支持 m3u8/HLS (H265/H265)播放;
  •  支持 Mpeg4格式(H264)播放;
  •  支持 HTTP-FLV/WS-FLV (H265/H265)播放;
  •  支持 HTTP-FMP4/WS-FMP4 (H265/H265)播放;
  •  支持 WEBRTC(easy支持H264/H265、其他流媒体支持H264)播放;
  •  支持 裸流(H264/H265) 播放;
  •  支持 直播和点播播放;
  •  支持 点播多清晰度播放;
  •  支持 全屏或比例显示;
  •  支持 电子放大;
  •  支持 水印(动态水印、幽灵水印);
  •  支持 显示上一个视频最后一帧;
  •  支持 播放器快照截图;
  •  支持 视频录制(WebM格式(音频+视频)、Mp4格式(视频),Flv格式(音频+视频));
  •  支持 超时、断网重连、异常暂停播放等;
  •  支持 解析视频i帧文件转base64;

仓库地址

https://github.com/EasyDarwin/EasyPlayer.js

使用方法

我是在vue集成的,在npm上没有找到这个库, 根据官方demo,在index.html里直接引入

然后直接在想用的页面使用即可

代码

// 方法
const onUse = (type) => {
  if (type == "hasAudio") {
    config.value.hasAudio = !config.value.hasAudio;
  } else {
    config.value.MSE = false;
    config.value.WCS = false;
    if (type == "MSE") config.value.MSE = true;
    if (type == "WCS") config.value.WCS = true;
  }
  if (isPlay.value) {
    onDestroy().then(() => {
      playCreate();

      onPlayer();
    });
  }
};

const onPlayer = () => {
  if (isUnmounted) return;
  isPlay.value = true;
  setTimeout(
    (url) => {
      if (isUnmounted) return;
      playerInfo.value &&
        playerInfo.value
          .play(url)
          .then(() => {})
          .catch((e) => {
            console.error(e);
          });
    },
    0,
    videoUrl.value
  );
};

const onDestroy = () => {
  return new Promise((resolve, reject) => {
    if (playerInfo.value) {
      playerInfo.value.destroy();
      playerInfo.value = null;
    }
    setTimeout(() => {
      if (isUnmounted) return;
      // @ts-ignore
      resolve();
    }, 100);
  });
};
const playCreate = () => {
  if (isUnmounted) return;
  var container = document.getElementById("player_box1");
  if (!container) return;
  // @ts-ignore
  var easyplayer = new EasyPlayerPro(container, {
    isLive: config.value.isLive, //默认 true
    bufferTime: 0.2, // 缓存时长
    stretch: false,
    MSE: config.value.MSE,
    WCS: config.value.WCS,
    hasAudio: config.value.hasAudio,
    watermark: { text: { content: "easyplayer-pro" }, right: 10, top: 10 },
  });

  easyplayer.on("fullscreen", function (flag) {
    console.log("is fullscreen", flag);
  });
  easyplayer.on("playbackRate", (rate) => {
    easyplayer.setRate(rate);
  });

  easyplayer.on("playbackSeek", (data) => {
    console.log("playbackSeek", data);
  });
  playerInfo.value = easyplayer;
};

然后组件加载时调用即可。

配置属性:

事件回调

使用方法:
//播放
EasyPlayrPro.on('play', function () {
    console.log('play');
})

记得文件要放在pubilc文件下 不然打包不进去。  

VUE组件版

使用起来更加方便,但是相比于上面那个方式延迟还是高了一些,不知道为什么。有懂得大佬指点一下非常感谢

地址

magic-easyplayer - npm

功能说明

  • [x] *支持定制控制器;

  • [x] *新增H265视频窗口适配[v1.1.0];

  • [x] 支持 MP4 播放;

  • [x] 支持 m3u8/HLS 播放;

  • [x] 支持 HTTP-FLV/WS-FLV 播放;

  • [x] 支持直播和点播播放;

  • [x] 支持播放器快照截图;

  • [x] 支持点播多清晰度播放;

  • [x] 支持全屏或比例显示;

  • [x] 自动检测 IE 浏览器兼容播放;

  • [x] 支持重连播放;

集成示例

  • 使用方式

  • [x] vue集成

  npm install magic-easyplayer --save
  • Vue 集成调用

copy node_modules/magic-easyplayer/dist/crossdomain.xml 到 静态文件 根目录

copy node_modules/magic-easyplayer/dist/EasyPlayer-lib.min.js 到 静态文件 根目录

注意: 没有调用会出现无法加载对应插件的报错

在 html 中引用 dist/EasyPlayer-lib.min.js

H.265

copy node_modules/magic-easyplayer/dist/EasyPlayer.wasm 到 静态文件 根目录

具体可以到npm库里去看 

https://www.npmjs.com/package/magic-easyplayer

### 集成大华播放器到Vue.js前端项目 为了在Vue.js项目中集成大华播放器,需考虑几个方面:加载必要的资源文件、处理兼容性和配置项设置。 #### 加载必要资源文件 对于vue-cli3构建工具创建的项目来说,在`vue.config.js`内完成对SWF文件加载的支持至关重要[^2]。具体而言,这涉及到调整Webpack配置以确保能够正确解析并打包.swf类型的文件。如果采用其他版本的Webpack,则应在相应位置做相似改动。 ```javascript // vue.config.js module.exports = { chainWebpack: config => { const types = ['vue-modules', 'vue', 'normal-modules', 'normal'] types.forEach(type => addStyleResource(config.module.rule('stylus').oneOf(type)) ) // 添加swf-loader用于处理.swf文件 config.module.rules.push({ test: /\.swf$/, loader: "file-loader", options: { name: "[name].[ext]" } }) }, } ``` #### 处理兼容性问题 现代Web开发环境下,考虑到浏览器的安全策略变化以及Flash逐渐被淘汰的趋势,建议优先选用基于HTML5的技术方案来替代传统的依赖于插件的方式进行视频流传输与展示[^4]。针对这种情况,可以选择一些成熟的第三方库如EasyPlayer.js作为解决方案之一[^3]。该库不仅支持多种网络协议(HTTP, RTMP, FLV, HLS),而且具备良好的跨平台特性,适用于不同操作系统和移动设备上的应用部署需求。 #### 初始化播放组件实例 假设已经成功引入所需脚本之后,可以在Vue单文件组件(SFC)内部定义好相应的DOM结构,并利用生命周期钩子函数完成初始化工作: ```html <template> <div id="player-container"></div> </template> <script> import EasyPlayer from 'easyplayer' export default { mounted() { this.initPlayer() }, methods: { initPlayer () { let playerInstance = new EasyPlayer({ autoplay: true, url: 'your_streaming_url_here', width: '100%', height: 'auto' }); document.getElementById('player-container').appendChild(playerInstance.getContainer()); } } }; </script> ``` 以上代码片段展示了如何在一个简单的Vue SFC中嵌入EasyPlayer播放控件,并指定其自动播放模式及源地址参数。实际应用场景可能还需要进一步定制样式表或其他高级选项,请参阅官方文档获取更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值