VUE2+ffmpeg处理非h264编码格式视频

1、安装npm install @ffmpeg/ffmpeg@0.10.0 @ffmpeg/core@0.9.8 video.js@8.12.0

2、在vue.config.js中devServer配置

 headers: {
            // 如果需要用到ffmpeg确保ShareArrayBuffer能够正常使用,可能会有安全隐患
            'Cross-Origin-Embedder-Policy': 'require-corp',
            'Cross-Origin-Opener-Policy': 'same-origin',
        }

3、拷贝下面三个文件到public静态文件夹下

4、创建convert文件

import FFmpeg from "@ffmpeg/ffmpeg";
const { createFFmpeg, fetchFile } = FFmpeg;
const ffmpeg = createFFmpeg({
    corePath: "/ffmpeg-core.js",
    log: true
})

export const transCode = async (url = "") => {
    if (!url) {
        return;
    }
    if (!ffmpeg.isLoaded()) {
        await ffmpeg.load();
    }

    ffmpeg.FS('writeFile', 'name', await fetchFile(url));
    await ffmpeg.run('-i', 'name', 'output.mp4');
    const data = ffmpeg.FS('readFile', 'output.mp4');
    return URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }))
}

5、创建播放组件

<script>
import videojs from "video.js";
import "video.js/dist/video-js.css";
import { transCode } from "./convert";
export default {
  name: "VideoPlayer",
  props: {
    height: {
      default: "100%",
    },
    width: {
      default: "100%",
    },
  },
  data() {
    return {
      player: null,
      options: {
        autoplay: "muted",
        controls: true,
        loop: true,
        muted: true,
        poster: "", //播放前加载图片
        preload: "auto", //是否预加载
        src: "", //视频地址
      },
    };
  },
  mounted() {
    this.init();
  },
  methods: {
    async init() {
      this.player = videojs(this.$refs.player, this.options);
      const buffer = await transCode(/**地址 */);
      this.player.src({
        type: "video/mp4",
        src: buffer,
      });
      this.player.ready(() => {});
    },
    destory() {
      this.player && this.player.dispose();
    },
  },
};
</script>
<template>
  <div class="video-player" :style="{ width, height }">
    <video class="player video-js vjs-default-skin" ref="player"></video>
  </div>
</template>
<style scoped lang="scss">
.video-player {
  position: relative;
  .player {
    height: 100%;
    width: 100%;
  }
}
</style>

注:

1、只能处理小视频,容易造成内存溢出;

2、等待时间较长,不是最优解;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/623676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XM1553B 航电总线协议模块(内置总线收发器)

是一款4M速率的高性能1553B模块&#xff0c;兼容1Mbps通信速率&#xff0c;支持单功能&#xff08;BC,orRT,or BM&#xff09;和多功能&#xff08;BC&1RT&BM&#xff09;&#xff0c;该模块内部集成32K16bit的双端口RAM和4M 1553B收发器。 主机端接口支持串口和SPI。串…

问题—前端调用接口url多加一个/,本地可以调通,测试环境报错302,分开调两个接口

问题背景 接口url前面多加一个/ &#xff0c;npm run serve 起项目&#xff0c;本地调用正常 npm run build 打包到测试环境&#xff0c;接口出现问题&#xff0c;分开调用接口&#xff0c;且报302错误 问题原因&#xff1a; 本地开发环境和测试环境的URL处理方式不同 本地使…

Pythonz中 SortedList的用法

文章目录 安装 sortedcontainers 库SortedList 基本用法特性与操作更多操作性能考虑实例&#xff1a;范围查询与交集高级特性与最佳实践自定义比较函数并行处理与多线程性能调优与其他数据结构结合使用 应用案例1. 金融交易记录分析2. 日志文件管理3. 学生成绩管理系统4. 实时数…

计算机Java项目|Springboot学生读书笔记共享

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、Python项目、前端项目、人工智能与大数据、简…

基于SpringBoot设计模式之创建型设计模式·抽象工厂模式

文章目录 介绍开始架构图&#xff08;以穿搭举例&#xff09;样例一&#xff08;html关于列表和表格的应用&#xff09;定义抽象工厂&#xff08;html&#xff09;定义抽象工厂需要制作抽象产物&#xff08;托盘&#xff09;定义具体工厂&#xff08;列表、表格&#xff09;定义…

开源模型应用落地-CodeQwen模型小试-集成langchain(四)

一、前言 通过学习代码专家模型&#xff0c;开发人员可以获得高效、准确和个性化的代码支持。这不仅可以提高工作效率&#xff0c;还可以在不同的技术环境中简化软件开发工作流程。代码专家模型的引入将为开发人员带来更多的机会去关注创造性的编程任务&#xff0c;从而推动软件…

webpack并行构建示例:

由于js的单线程特性&#xff0c;文件和任务时 要等待一个任务执行完成后执行下一个任务&#xff0c;但在实际开发中&#xff0c;很多任务是可以并行执行的&#xff08;如同时处理多个不同js文件或同事压缩多张图片&#xff09;&#xff0c;一些loader和插件&#xff08;thread-…

交通地理信息系统实习教程(二)

这篇文章服务于GIS背景用户以及有志于GIS的朋友 操作源数据位置&#xff1a;【免费】交通地理信息系统实习二源数据资源-CSDN文库 软件安装包位置&#xff1a;【免费】TransCad-交通地理信息系统软件资源-CSDN文库 一、最短路径分析 1.1软件启动说明 这里需要给出一个必要的…

png格式怎么压缩的更小?用这几个方法轻松搞定

png格式支持透明背景&#xff0c;因此在网页设计中经常使用&#xff0c;经常用于创建图标、按钮、徽标和其他元素&#xff0c;使其能够与不同背景颜色和图像融合&#xff0c;实现更好的视觉效果&#xff0c;所以有时候我们就会遇到需要把png图片压缩小一点的情况&#xff0c;这…

【计算机网络】Socket网络编程

&#x1f4bb;文章目录 &#x1f4c4;前言Socket编程基础概念工作原理 Socket API介绍socket函数绑定、监听函数accept、connect接受/发送函数 Socket API的应用Socket类与其派生类的设计服务器与客户端的设计使用 &#x1f4d3;总结 &#x1f4c4;前言 现今我们的日常生活当中…

【经典文献】光声立体成像的对极几何

文献标题&#xff1a;《Epipolar Geometry of Opti-Acoustic Stereo Imaging》作者列表&#xff1a;Shahriar Negahdaripour发表期刊&#xff1a;IEEE Transactions on Pattern Analysis and Machine Intelligence发表年份&#xff1a;2007DOI链接&#xff1a;10.1109/TPAMI.20…

EPS软件标注点坐标值

1、如下&#xff0c;点击右侧&#xff08;尺寸标注&#xff09;按钮&#xff1a; 2、弹出一个对话框&#xff0c;如下&#xff1a; 3、在上图对话框中设置好箭头样式和小数位数&#xff0c;然后点击图上一点&#xff0c;右击结束再鼠标指定位置&#xff0c;如下&#xff1a; 如…

Lists.partition用法详解

文章目录 一、引入依赖二、用法三、输出 一、引入依赖 依赖于谷歌的guava 包 <!-- guava --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.1-jre</version></dependency&…

LeetCode算法题:49. 字母异位词分组(Java)

给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", …

【吃透Java手写】5-RPC-简易版

【吃透Java手写】RPC-简易版-源码解析 1 RPC1.1 RPC概念1.2 常用RPC技术或框架1.3 初始工程1.3.1 Productor-common&#xff1a;HelloService1.3.2 Productor&#xff1a;HelloServiceImpl1.3.3 Consumer 2 模拟RPC2.1 Productor2.2 模拟一个RPC框架2.2.1 HttpServer2.2.2 Http…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型&#xff1a; 销售报告&#xff1a;4S店需要定期向总部提交销售报告&#xff0c;包括销售数量、销售额、市场份额等关键指标。 库存管理文件&#xff1a;包括车辆库…

Linux-基础IO

&#x1f30e;Linux基础IO 文章目录&#xff1a; Linux基础IO C语言中IO交互       常用C接口         fopen         fputs         fwrite         fgets 当前路径       三个文件流 系统文件IO       open函数     …

windows 环境下安装《车辆动态监控系统》支持JT808、JT1078、苏标主动安全设备接入

《车辆动态监控系统》下载安装部署包 开放端口 80/443/8800&#xff0c;web后台端口&#xff0c;nginx代理服务&#xff0c;nginx默认为8800端口8808&#xff0c;JT808专用端口6802&#xff0c;视频播放推流端口6891-6898&#xff0c;FTP端口6821&#xff0c;苏标主动安全附件…

一. Ast - 反混淆(基础篇)

目录 ​编辑 1. 什么是Ast-了解 2. 什么是反混淆-了解 3. 了解Ast结构 4. 思考 5. 前置准备 6. 什么是babel 7. 安装babel 8. ast反混淆代码基本结构 9. babel中的组件 parser与generator 组件 traverse 组件 与visitor enter与exit visitor 其他写法 traverse …

Python API和微服务的测试库之httpretty使用详解

概要 在现代软件开发中,API和微服务的测试是确保应用稳定性和功能正确性的关键环节。Python的HTTPretty库提供了一个强大的工具,允许开发者在不实际发起网络请求的情况下模拟HTTP请求和响应。本文将全面介绍HTTPretty的安装、特性、基本与高级功能,并结合实际应用场景,展示…