浏览器视频合成转码@ffmpeg/ffmpeg使用笔记

Vite + Vue项目使用@ffmpeg/ffmpeg0.12.x版本踩坑笔记

ffmpegwasm项目github仓库有一个 vue-vite-app 模板,其中 components 目录下的 FFmpegDemo.vue 组件有示例代码,想要快速验证使用@ffmpeg/ffmpeg 建议把模版克隆下来启动。

安装

sh 复制代码
npm install @ffmpeg/ffmpeg @ffmpeg/util @ffmpeg/core -D
sh 复制代码
yarn add @ffmpeg/ffmpeg @ffmpeg/util @ffmpeg/core -D
sh 复制代码
pnpm add @ffmpeg/ffmpeg @ffmpeg/util @ffmpeg/core -D

引用

javascript 复制代码
<script setup>
import { FFmpeg } from '@ffmpeg/ffmpeg';
import { fetchFile, toBlobURL } from '@ffmpeg/util';
const videoURL = 'https://raw.githubusercontent.com/ffmpegwasm/testdata/master/video-15s.avi';//远程视频地址
const ffmpeg = new FFmpeg();
// 加载 ffmpeg 核心
const transcode = async () => {
  ffmpeg.on('log', (e) => {
    console.log(e.message);
  });
  
  await ffmpeg.load({
  //coreURL 和 wasmURL 加载核心包 GitHub文档仓库的示例是加载CDN的,我们可以把包放到public目录
    let coreURL = await toBlobURL('/public/static/esm/ffmpeg-core.js', 'text/javascript');
    let wasmURL = await toBlobURL(`/public/static/esm/ffmpeg-core.wasm`, 'application/wasm');
    await ffmpeg.load({
      coreURL,
      wasmURL
    });
  });
  
  await ffmpeg.writeFile('test.avi', await fetchFile(videoURL));//将远程视频写入FFmpeg文件系统
  await ffmpeg.exec(['-i', 'test.avi', 'test.mp4']);//FFmpeg输出视频
  const data = await ffmpeg.readFile('test.mp4');// 读取生成的视频文件
  const videoBlob = new Blob([videoData.buffer], { type: 'video/mp4' });
  videoSrc = URL.createObjectURL(videoBlob);// 返回视频Blob的URL,可用于video标签的src属性
};

</script>

关键点

1.GitHub文档仓库的示例截图,我们根据关键点将本地代码稍做修改

2.关键的核心包位置,我们拷贝到public目录

相关推荐
BJ-Giser6 小时前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码20357 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
发现一只大呆瓜7 小时前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite
天天鸭7 小时前
前端仔写了个 AI Agent,才发现大模型只干了 10% 的活
前端·python·ai编程
发现一只大呆瓜8 小时前
前端模块化:CommonJS、AMD、ES Module三大规范全解析
前端·面试·vite
IT_陈寒8 小时前
一文搞懂JavaScript的核心概念
前端·人工智能·后端
IT_陈寒8 小时前
Java开发者必看!5个提升开发效率的隐藏技巧,你用过几个?
前端·人工智能·后端
前端Hardy8 小时前
Wails v3 正式发布:用 Go 写桌面应用,体积仅 12MB,性能飙升 40%!
前端·javascript·go
Highcharts.js8 小时前
Highcharts React v4 迁移指南(下):分步代码示例与常见问题解决
javascript·react.js·typescript·react·highcharts·代码示例·v4迁移
Laurence8 小时前
Qt 前后端通信(QWebChannel Js / C++ 互操作):原理、示例、步骤解说
前端·javascript·c++·后端·交互·qwebchannel·互操作