首页TypeScriptbilibili/web-demuxer
bilibili

web-demuxer

Frontend#WebAssembly#WebCodecs#Multimedia#TypeScript#FFmpeg
前往 GitHub →
185

// 项目简介

Web-Demuxer 是一个基于浏览器的库,利用 WebAssembly 为各种多媒体格式提供全面的解封装功能。它专为与 WebCodecs API 无缝集成而设计,通过提供必要的解码器配置和编码数据块来实现功能。该库支持多种文件类型,并允许开发人员针对特定格式需求构建自定义版本。

// 技术分析

Web-Demuxer 是一个基于浏览器的多媒体处理库,利用 WebAssembly 为 WebCodecs API 提供强大的解封装(demuxing)功能。它解决了 WebCodecs 缺乏原生解封装能力的局限性,提供了一个统一的接口来处理 MP4、MKV、FLV 等多种格式。通过采用 WebCodecs-first 的设计,该项目简化了解码器配置和编码数据块的提取过程,使其成为开发者在浏览器中构建高性能媒体应用的关键工具。

// 核心亮点

01
提供了一个 WebCodecs-first API,可与浏览器原生解码流水线无缝集成。
02
在一个软件包中支持包括 mov、mp4、mkv、webm、flv 等在内的广泛多媒体格式。
03
提供类似于行业标准工具 ffprobe 的详细媒体元数据提取功能。
04
支持可定制的 WASM 构建,允许开发者仅包含必要的格式支持以减小包体积。
05
支持通过 seek 操作进行随机访问,以及通过 ReadableStreams 进行顺序数据访问,实现灵活的媒体处理。

// 典型使用场景

01
与 WebCodecs 无缝集成,实现基于浏览器的视频和音频解码
02
提取类似于 ffprobe 输出的详细媒体元数据
03
支持自定义 WASM 构建,以适配特定的多媒体容器格式

// 快速开始

首先,通过 npm 安装该软件包,并确保所需的 WASM 文件已从您的静态目录中提供。初始化 WebDemuxer 实例,使用您的媒体源调用 load 方法,并使用 getDecoderConfig 或 seek 来获取用于 WebCodecs VideoDecoder 或 AudioDecoder 的数据。