前言
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并且能夠利用它們來創建一個新的流媒體格式的自由軟件項目,它被廣泛應用在視頻處理、音頻處理以及直播領域。其中,@ffmpeg/ffmpeg
是一個將 FFmpeg 編譯為 WebAssembly(WASM)的庫,可支持幾乎所有的音視頻格式。
安裝與引入
- 使用 npm 安裝
@ffmpeg/ffmpeg
和@ffmpeg/core
npm install @ffmpeg/core@0.11.0 @ffmpeg/ffmpeg@0.11.6 --save// @ffmpeg/ffmpeg@0.11.x 系列版本已經被廣泛使用,且與 Vite 和其他工具鏈兼容
- 在 JavaScript 文件中引入該庫
參數名 作用 默認值 log
是否啟用日志輸出(true 或 false) false
corePath
指定 FFmpeg WebAssembly 核心文件的路徑,例如 /node_modules/@ffmpeg/core/ffmpeg-core.js
(無默認值,必須指定) progress
提供進度回調函數,用于顯示任務執行的進度信息 (無默認值,可選) import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg';
-
啟用 跨源隔離(Cross-Origin Isolation),這是瀏覽器安全策略的一部分.
// vite.config.js import { defineConfig } from 'vite';export default defineConfig({server: {headers: {'Cross-Origin-Opener-Policy': 'same-origin','Cross-Origin-Embedder-Policy': 'require-corp',},}, });
加載 FFmpeg?
使用 createFFmpeg
創建一個 FFmpeg 實例,并通過 ffmpeg.load()
方法異步加載
const ffmpeg = createFFmpeg({log: true,corePath: '/node_modules/@ffmpeg/core/ffmpeg-core.js', // 指定核心路徑
});
await ffmpeg.load();
處理輸入文件?
使用 fetchFile
方法從用戶上傳的文件或其他資源中獲取文件,并通過 ffmpeg.FS
方法將其寫入 FFmpeg 的虛擬文件系統(