seydx/node-av

FFmpeg bindings for Node.js. Features both low-level and high-level APIs, full hardware acceleration, TypeScript support, and modern async patterns

解决的问题

需要进行音视频处理的 Node.js 开发者通常依赖 FFmpeg 命令行工具,这意味着需要生成进程并解析输出。NodeAV 通过直接绑定到 FFmpeg 的原生库消除了这一层,以最小的开销为您提供完全的控制。它增加了 TypeScript 类型安全性,因此编解码器、格式、滤镜等选项在编译时都会经过检查,从而减少错误并改善开发体验。

工作原理

NodeAV 使用 N-API 将 Node.js 连接到 FFmpeg 的 C API。它提供三个级别的 API:

  • 低级 (Low-level):直接访问 FFmpeg 函数以实现最大程度的控制。
  • 高级 (High-level):针对解码、编码和转码等常见任务的抽象。
  • 管道 (Pipeline):用于多步处理的简单链式接口。

它包括具有自动检测功能的硬件加速(CUDA、VAAPI 等),并使用 Disposable 模式(例如 using 和 await using)自动管理资源。预构建的二进制文件在安装期间下载,与绑定所使用的 FFmpeg 构建版本匹配,因此无需单独设置。它还提供设备捕获、过滤和流媒体等实用程序。

适用人群

适用于构建需要媒体处理应用程序的 Node.js 开发者——例如视频转码、IP 摄像头集成、直播或屏幕捕获——他们希望获得接近 FFmpeg CLI 的性能,同时又不失类型良好的 JavaScript API 的便利性。它对于需要将 FFmpeg 功能直接嵌入 Node.js 进程的项目也很有用,特别是那些需要硬件加速的项目。

亮点

  • 类型安全选项:针对每个编解码器、格式、约 580 个滤镜和比特流滤镜,均根据 FFmpeg 自身的元数据生成——在编辑器中提供自动补全和验证。
  • 三个 API 层级(低级、高级、管道)以满足不同需求。
  • 硬件加速:具有自动检测功能,并支持特定设备(CUDA、VAAPI 等)。
  • 设备捕获:用于摄像头、麦克风和屏幕(特定平台的后端,如 AVFoundation、V4L2、DirectShow)。
  • Whisper 语音识别:通过 whisper.cpp 集成,支持自动模型下载和硬件加速推理。
  • 高级过滤:使用 FilterComplexAPI 处理复杂的图形、叠加层和实时效果。
  • 浏览器流媒体:通过 fMP4 或 WebRTC,包括对 RTSP 摄像头的支持。
  • RTSP 反向通道/对讲:用于与 IP 摄像头进行双向音频通信。
  • 性能可媲美 FFmpeg CLI(基准测试显示在大多数操作中开销几乎为零)。
  • 自动资源清理:使用 Disposable 模式,减少内存泄漏。
  • 预构建二进制文件:适用于 Windows、Linux 和 macOS——无需手动安装 FFmpeg。
  • Tree-shaking 支持:为 API、常量和布局提供单独的入口点。

相关

  • 项目
  • 项目
  • 项目
  • 项目