【vue】ffmpeg实现web在线转码播放:

本文介绍了如何在前端使用ffmpeg进行视频压缩,包括安装ffmpeg库、设置跨域请求头以及提供了一个Vue组件实例,展示了如何通过JavaScript调用ffmpeg进行视频压缩并处理跨域问题。
摘要由CSDN通过智能技术生成


一、效果:

image.png
image.png

二、文档:

ffmpeg
HTML: HyperText Markup Language | MDN
纯前端使用ffmpeg实现视频压缩_js实现前端视频压缩-CSDN博客
Js使用ffmpeg进行视频剪辑和画面截取_vue项目 ffmpeg截取视频片段-CSDN博客
ffmpeg实现web在线转码播放
vue2+vite利用ffmpeg实现纯前端视频剪切
ffmpeg 使用javascript 实现录屏demo

三、实现:
【1】安装ffmpeg
yarn add @ffmpeg/ffmpeg @ffmpeg/core  
【2】引入并初始化

需要在配置文件中设置请求头,否则会报跨域错误
image.png
image.png

headers: {
	"Access-Control-Allow-Origin": "*",
	"Cross-Origin-Opener-Policy": "same-origin",
	"Cross-Origin-Embedder-Policy": "require-corp",
},

image.png

【3】案例:
<template>
    <!-- tempalte部分 -->
    <h3>视频前端压缩</h3>
    <video id="output-video" controls :src="vedioSrc"></video><br/>
    <input type="file" id="uploader" @change="initFfmpeg">
		<h5 id="message">{{ message }}</h5>
</template>

<script>
import { createFFmpeg, fetchFile } from "@ffmpeg/ffmpeg";

export default {
  data() {
    return {
      message: null,
      vedioSrc: '',
    };
  },
  methods: {
    //初始化
    initFfmpeg() {
      let file = document.querySelector("#uploader").files[0];
      const ffmpeg = createFFmpeg({
        corePath: "ffmpeg-core.js",//public下面的ffmpeg-core.js
        log: true,
      });
      //设置进度条
      ffmpeg.setProgress(({ ratio }) => {
				this.percentage = Math.floor(ratio * 100);
      });
      //开始压缩
      const transcode = async (file) => {
        const { name } = file;
        this.message = "Loading ffmpeg-core.js";
        await ffmpeg.load();
        ffmpeg.FS("writeFile", name, await fetchFile(file));
        this.message = "Start transcoding";
        // '-b','2000000'  值越小  压缩率越大
        await ffmpeg.run("-i", name, "-b", "700000", "output.mp4");
        this.message = "压缩完成";
        const data = ffmpeg.FS("readFile", "output.mp4");
        this.fileBytes = data.byteLength;
        //把压缩后的视频进行回显
        this.vedioSrc = URL.createObjectURL(
          new Blob([data.buffer], { type: "video/mp4" })
          );
      };
      transcode(file);
    },
  },
};
</script>
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sun Peng

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

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

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

打赏作者

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

抵扣说明:

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

余额充值