Yahweasel/libav.js
This is a compilation of the libraries associated with handling audio and video in ffmpeg—libavformat, libavcodec, libavfilter, libavutil, libswresample, and libswscale—for emscripten, and thus the web.
해결하는 문제
웹 애플리케이션은 오디오나 비디오 파일을 처리해야 하는 경우가 많습니다—형식 변환, 프레임 추출, 필터 적용 등. 브라우저에서 이를 수행하려면 전통적으로 서버 측 지원이나 네이티브 플러그인이 필요했습니다. libav.js는 선도적인 오픈소스 멀티미디어 프레임워크인 FFmpeg의 강력한 기능을 순수 JavaScript 및 WebAssembly로 가져옵니다. FFmpeg의 핵심 라이브러리(libavformat, libavcodec, libavfilter, libavutil, libswresample)를 WebAssembly 및 asm.js로 컴파일하여 네이티브 코드 없이 브라우저(또는 Node.js)에서 직접 오디오 및 비디오를 인코딩, 디코딩, 먹싱, 디먹싱, 필터링할 수 있습니다.
작동 방식
libav.js는 Emscripten을 사용하여 FFmpeg 라이브러리를 WebAssembly 및 asm.js로 컴파일합니다. 전역 LibAV 객체를 노출하는 JavaScript 파일을 로드합니다. LibAV.LibAV()를 호출하면 사용 가능한 인스턴스로 해석되는 Promise가 반환됩니다. 인스턴스는 writeFile, ff_init_demuxer_file, ff_init_decoder, ff_read_multi, ff_decode_multi와 같은 함수를 제공하여 미디어 작업을 처리합니다. 가상 장치를 통한 비동기 I/O를 지원하여 FFmpeg의 인메모리 파일 시스템의 제한을 피합니다. 이 프로젝트는 고도로 사용자 정의할 수 있습니다. 특정 코덱과 컨테이너를 포함하는 사전 빌드 변형(예: default, opus, flac, webm, aac)을 선택하거나 구성 조각을 사용하여 자신만의 변형을 만들 수 있습니다. 각 변형은 ffmpeg 및 ffprobe CLI 도구를 포함하거나 포함하지 않고 빌드할 수 있으며, 선택적 디버그 버전도 제공됩니다. 라이선스는 신중하게 처리됩니다. FFmpeg는 LGPL이므로 소스 코드가 포함됩니다. 래퍼 코드는 허용적인 0-clause BSD 라이선스를 사용합니다.
대상 사용자
이것은 브라우저에서 오디오나 비디오를 처리해야 하는 웹 개발자를 위한 것입니다—예를 들어, 미디어 편집기, 변환기, 스트리밍 애플리케이션을 구축하는 경우. 또한 브라우저 지원과 관계없이 특정 코덱 세트를 보장하려는 경우(특히 먹싱/디먹싱이 없고 코덱 범위가 일관되지 않은 WebCodecs와 결합할 때) 유용합니다. 이 라이브러리는 브라우저와 Node.js에서 작동하지만, Node.js 사용자는 네이티브 FFmpeg를 사용하는 것이 좋습니다. TypeScript 프로젝트 통합을 위해 TypeScript 유형 정의가 제공됩니다.
하이라이트
- 순수 JavaScript 및 WebAssembly — 플러그인이나 서버 불필요.
- 완전한 FFmpeg 라이브러리 기반: libavformat, libavcodec, libavfilter, libavutil, libswresample.
ffmpeg및ffprobeCLI(특정 변형)를 JavaScript 함수로 포함.- 모듈식 변형: 각 디먹서 또는 디코더에 대해 별도 빌드, AVGuesser 및 TransAVormer와 같은 동반 도구를 통한 온디맨드 로딩 가능.
- 가상 장치를 통한 비동기 I/O로 파일 크기는 JavaScript 숫자 유형에 의해서만 제한됩니다.
- 동반 폴리필 및 브리지 프로젝트를 통해 WebCodecs와 함께 작동.
- 명확한 라이선스: 소스 코드 제공(LGPL), 래퍼 코드는 0-clause BSD.
- 고도로 사용자 정의 가능: 다른 FFmpeg 버전에 대해 빌드하거나 사용자 정의 변형 생성.
- NPM 및 GitHub에 게시, 빠른 사용을 위한 CDN 옵션 제공.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트