目前没有任何浏览器在 WebCodecs 实现中支持 FLAC 编码。此扩展包为 Mediabunny 提供了一个可靠的 FLAC 编码器。它基于 Mediabunny 的 自定义编码器 API 实现,并在底层使用经过快速、大小优化的 WASM 构建版本的 libFLAC。
GitHub 页面安装
此库与 Mediabunny 互为对等依赖。请使用 npm 同时安装两者:
npm install mediabunny @mediabunny/flac-encoder或者,直接使用 script 标签引入它们:
<script src="mediabunny.js"></script>
<script src="mediabunny-flac-encoder.js"></script>这将暴露全局对象 Mediabunny 和 MediabunnyFlacEncoder。使用 mediabunny-flac-encoder.d.ts 可为这些全局变量提供类型定义。您可以从 发布页面 下载构建后的分发文件。
用法
import { registerFlacEncoder } from '@mediabunny/flac-encoder';
registerFlacEncoder();完成 - Mediabunny 现在会自动使用已注册的 FLAC 编码器。
如果您希望更加严谨,请首先检查原生浏览器支持情况:
import { canEncodeAudio } from 'mediabunny';
import { registerFlacEncoder } from '@mediabunny/flac-encoder';
if (!(await canEncodeAudio('flac'))) {
registerFlacEncoder();
}示例
此处,我们将输入文件转换为 FLAC 文件:
import {
Input,
ALL_FORMATS,
BlobSource,
Output,
BufferTarget,
FlacOutputFormat,
canEncodeAudio,
Conversion,
} from 'mediabunny';
import { registerFlacEncoder } from '@mediabunny/flac-encoder';
if (!(await canEncodeAudio('flac'))) {
registerFlacEncoder();
}
const input = new Input({
source: new BlobSource(file), // 例如来自文件选择器
formats: ALL_FORMATS,
});
const output = new Output({
format: new FlacOutputFormat(),
target: new BufferTarget(),
});
const conversion = await Conversion.init({
input,
output,
});
await conversion.execute();
output.target.buffer; // => 包含 FLAC 文件的 ArrayBuffer