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 빌드와 일치하므로 별도의 설정이 필요하지 않습니다. 또한 장치 캡처, 필터링, 스트리밍과 같은 유틸리티도 제공합니다.

대상 사용자

비디오 트랜스코딩, IP 카메라 통합, 라이브 스트리밍, 화면 캡처 등 미디어 처리가 필요한 애플리케이션을 구축하는 Node.js 개발자에게 적합합니다. 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, 상수, 레이아웃별 별도의 진입점 제공.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트