대상 환경 고르기
This content is for v0.4. Switch to the latest version for up-to-date documentation.
alpha2의 모든 패키지는 같은 렌더링 코드로 같은 프로젝트 문서를 렌더링합니다. 차이는 실행되는 위치와, 미디어를 누가 디코딩하고 인코딩하느냐에 있습니다. 이 페이지를 보고 하나를 고르세요.
한눈에 보기
섹션 제목: “한눈에 보기”| 패키지 | 실행 환경 | 미디어 디코딩 | 파일 인코딩 | 렌더링 |
|---|---|---|---|---|
alpha2 |
브라우저(WebAssembly) | 앱(도우미: WebCodecs, mediabunny) | 앱(도우미: WebCodecs, mediabunny) | WebGPU, 없으면 WebGL2, 그것도 없으면 CPU 렌더러 |
@alpha2-sh/react |
브라우저, React 18 이상 | alpha2와 같음 |
alpha2와 같음 |
alpha2와 같음 |
@alpha2-sh/editor |
브라우저. 편집 코어는 Node.js에서도 동작 | 브라우저 브리지가 파일을 가져옴 | 브라우저 브리지가 WebCodecs로 export | alpha2와 같음 |
@alpha2-sh/node |
Node.js, Electron 메인 프로세스 | alpha2-host(FFmpeg 8) |
alpha2-host(FFmpeg 8) |
GPU 또는 CPU 렌더러 |
alpha2-host |
명령줄, 또는 stdio를 통한 모든 언어 | FFmpeg 8 | FFmpeg 8 | GPU 또는 CPU 렌더러 |
alpha2 (Python) |
Python 3.11 이상 | alpha2-host |
alpha2-host |
GPU 또는 CPU 렌더러 |
alpha2 (크레이트) |
여러분의 Rust 프로그램 | 프로그램(또는 alpha2-native) |
프로그램(또는 alpha2-native) |
wgpu, 외장 고성능 어댑터가 있으면 그 어댑터 |
브라우저: alpha2
섹션 제목: “브라우저: alpha2”브라우저에서 프리뷰하거나 export하면서 모든 단계를 직접 제어하고 싶을 때 고릅니다. 이 패키지는 WebAssembly로 빌드한 엔진과 이를 구동하는 TypeScript로 이루어져 있습니다.
- 하는 일: 프로젝트 불러오기와 검증, 특정 시각을 캔버스에 렌더링, 정확한 프레임 그리드에 맞춘 오프스크린 export(planar I420 프레임), 오디오 믹싱, 라우드니스 측정, 텍스트 레이아웃.
- 하지 않는 일: 파일 열기. 미디어 디코딩과 프레임·오디오 업로드, export 인코딩은 앱이 합니다.
alpha2/frame-supply,alpha2/media, 선택 의존성인alpha2/mediabunny(디코더, 그리고 MP4·MOV·MKV·WebM 싱크)가 이 일의 대부분을 대신해 줍니다.
React: @alpha2-sh/react
섹션 제목: “React: @alpha2-sh/react”React 트리 안에 alpha2 플레이어를 보여 줄 때 고릅니다. Alpha2Canvas가 캔버스를 만들어 여러분이 만든 플레이어에 넘기고, timeTicks가 바뀔 때마다 그 시각을 보여 주며, 캔버스가 사라지면 플레이어를 정리합니다. 플레이어와 프레임은 여전히 여러분이 공급합니다.
에디터: @alpha2-sh/editor
섹션 제목: “에디터: @alpha2-sh/editor”편집 앱을 만들 때 고릅니다. 코어는 문서, 타입이 있는 커맨드, 검증, 실행 취소를 담당하며 DOM 없이 동작하므로 Node.js에서도 쓸 수 있습니다. 브라우저 브리지는 파일 가져오기, 프리뷰, 오디오를 포함한 재생, WebCodecs를 통한 MP4·MOV·MKV·WebM export를 처리합니다. @alpha2-sh/editor/react는 React 바인딩을 제공합니다(React 19.3 이상의 19.x).
Node.js와 Electron: @alpha2-sh/node
섹션 제목: “Node.js와 Electron: @alpha2-sh/node”서버나 Electron 메인 프로세스에서 파일을 export할 때 고릅니다. 네이티브 렌더러인 alpha2-host를 export마다 프로세스 하나씩 실행합니다. 호스트는 FFmpeg 8로 디코딩과 인코딩을 하고(기본은 H.264와 AAC를 담은 MP4이며 MOV, Matroska, WebM도 지원), 하드웨어 GPU로 렌더링하며 GPU가 없으면 CPU로 렌더링합니다. npx @alpha2-sh/node install이 플랫폼에 맞는 호스트를 받아 옵니다.
- 하는 일: 파일 export, PNG 스틸 렌더링, 기능(capabilities) 보고, 렌더링 전 미디어 점검(
conform). - 하지 않는 일: 인터랙티브 프리뷰. 프리뷰가 필요하면 브라우저 패키지와 함께 쓰세요.
그 밖의 언어: alpha2-host
섹션 제목: “그 밖의 언어: alpha2-host”셸 스크립트나 클라이언트가 없는 언어에서 쓸 때 고릅니다. alpha2-host export는 명령줄에서 프로젝트 하나를 export합니다. alpha2-host serve는 표준 입력으로 JSON 요청을 받고 표준 출력으로 응답합니다. 이것이 호스트 프로토콜입니다. 아카이브에는 파일을 조사(probe)하고, 트랜스코딩하고, 썸네일을 만드는 미디어 명령 alpha2도 들어 있습니다.
Python: alpha2
섹션 제목: “Python: alpha2”Python에서 프로젝트를 만들고, 검증하고, export할 때 고릅니다. 프로젝트는 평범한 dict이고, 검증은 엔진의 검증기를 프로세스 안에서 그대로 실행하며, 렌더링은 alpha2-host가 합니다. 작성 도우미, 텍스트 측정기, 그리고 의도(슬라이드쇼, 타이틀, 자막, 음악)로 기술한 영상을 프로젝트로 컴파일하는 alpha2.compose도 제공합니다.
Rust: alpha2 크레이트
섹션 제목: “Rust: alpha2 크레이트”Rust 프로그램에 엔진을 내장할 때 고릅니다. 디코딩한 프레임을 FrameProvider로 엔진에 빌려주고, 렌더링된 프레임과 YUV 4:2:0 플레인을 돌려받습니다. 크레이트는 미디어 파일을 읽거나 쓰지 않습니다. 필요하면 alpha2-native가 FFmpeg 8로 디코딩, 조사, 인코딩을 합니다. wgpu-interop 기능을 켜면 여러분의 wgpu 디바이스와 텍스처를 엔진과 공유할 수 있습니다.
SVG, 애니메이션 이미지(GIF, 애니메이션 WebP, APNG), Lottie, OpenEXR, 이미지 시퀀스는 확장 프로바이더가 읽습니다. alpha2-host는 네이티브로 읽고, 브라우저는 프로젝트가 그런 소스를 열 때만 같은 코드를 별도의 WebAssembly 모듈로 불러옵니다. 확장을 참고하세요.
플랫폼
섹션 제목: “플랫폼”| 플랫폼 | GPU | 하드웨어 디코딩·인코딩 |
|---|---|---|
| 브라우저 | WebGPU. WebGPU 없이 캔버스에 그릴 때는 WebGL2 | 앱이 담당 |
| Linux x64, arm64 | Vulkan | Vulkan Video |
| macOS (Apple silicon) | Metal | VideoToolbox |
| Windows x64 | Direct3D 12 | D3D12VA |
최소 런타임은 Node.js 20, Python 3.11, Rust 1.88입니다.
