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