콘텐츠로 이동

CLI 레퍼런스

이 페이지는 릴리스 아카이브에 든 두 네이티브 프로그램의 모든 명령을 정리합니다. alpha2-host는 프로젝트를 렌더링해 export하고, alpha2는 미디어 파일 하나를 다룹니다. 프로그램을 받는 방법은 CLI를 참고하십시오. 둘 다 FFmpeg 8로 디코딩하고 인코딩합니다.

두 프로그램 모두 인자 없이 실행하면 사용법을 출력합니다. 인자는 UTF-8이어야 하며, 그렇지 않은 인자는 그 인자를 지목한 INVALID_INPUT으로 실패합니다.

alpha2-host serve
alpha2-host conform --project <project.json> --asset <source-id>=<path> ...
alpha2-host export --project <project.json> --asset <source-id>=<path> ... --out <output>
하위 명령 하는 일
export 프로젝트를 렌더링해 MP4, MOV, Matroska, WebM 파일로 인코딩합니다. 결과는 JSON으로 표준 출력에, 진행 상황은 표준 오류에 씁니다.
conform 렌더링도 GPU도 없이 프로젝트의 미디어를 검사합니다. 보고서를 출력하고, export를 막는 것이 있으면 1로 종료합니다.
serve 표준 입력으로 요청을 받아 표준 출력으로 응답합니다. 한 줄에 JSON 객체 하나씩 오가는 호스트 프로토콜입니다. 플래그는 받지 않습니다.
터미널 창
alpha2-host export --project project.json --asset image-1=image.png --out tutorial.mp4

성공하면 표준 출력에 {"ok": true, "output": "<path>", "result": {...}}를 씁니다. result는 export 결과(프레임, 인코더, 레이트 컨트롤, 시간, 소스마다 읽은 미디어)이며, @alpha2-sh/node의 NativeExportResult 타입과 같습니다. 진행 줄(alpha2-host export: frames 12/30)은 표준 오류로 갑니다. 실패하면 메시지가 표준 오류로 가고 종료 상태가 0이 아닙니다.

--overwrite를 주지 않으면 출력 파일이 아직 없어야 합니다. export는 출력 옆에 <stem>.a2partial.<ext>를 쓰고, 완성되면 제자리로 옮깁니다. 완성된 파일을 옮기지 못하면 옆에 <stem>.a2kept.<ext>로 남깁니다.

플래그 값 기본값 의미
--project 경로 필수 프로젝트 문서. UTF-8(BOM 유무 무관)로 읽고, UTF-16 BOM으로 시작하면 UTF-16으로 읽습니다.
--asset <source-id>=<path> 없음 소스 하나의 파일. export가 읽는 소스마다 반복합니다.
--proxy <source-id>=<path> 없음 소스 원본으로 만든 프록시. 여러 개면 선호 순서대로 반복합니다.
--media original, proxies original proxies는 최신 프록시가 있으면 프록시를, 없으면 원본을 읽습니다.
--frames <source-id>=<path>,<path>,... 없음 이미지 시퀀스의 프레임 파일을 순서대로. 빈 경로는 빈 프레임입니다.
--resource <source-id> <locator> <path>(값 세 개) 없음 SVG 소스의 <image href>나 Lottie 소스의 이미지 에셋이 가리키는 파일. 소스가 쓴 locator로 지정합니다.
--effect-asset <resource-id>=<path> 없음 .cube LUT 같은 프로젝트 이펙트 리소스의 파일.
--effects 경로 없음 프로젝트가 내장 이펙트 외에 쓰는 런타임 이펙트 정의의 JSON 배열.
--font 경로 없음 자막, 텍스트, SVG 텍스트용 폰트 파일. 대체 순서대로 반복합니다. 텍스트를 보여 주는 프로젝트에는 하나 이상 필요합니다.
플래그 값 기본값 의미
--start-ticks 정수 0 범위의 시작, 틱 단위(1초에 120,000).
--end-ticks 정수 타임라인의 끝 범위의 끝. 기본값은 자막 큐를 포함해 타임라인에서 마지막으로 보이는 것이 끝나는 지점입니다. 아무것도 보이지 않는 프로젝트에서는 필수입니다.
--frame-rate <num>/<den> 프로젝트의 frame_rate 출력 프레임 레이트. 예: 30000/1001.

범위는 프레임 격자에 맞게 넓혀집니다.

플래그 값 기본값 의미
--out 경로 필수 쓸 파일. --container가 없으면 확장자(.mp4나 .m4v, .mov, .mkv, .webm)가 컨테이너를 정하며, 둘은 일치해야 합니다.
--overwrite 꺼짐 export가 완성되면 --out 자리의 일반 파일을 교체합니다. 실패하거나 취소된 export는 기존 파일을 그대로 둡니다.
--container mp4, mov, mkv, webm 확장자에서
--no-audio 오디오 켜짐 오디오 트랙을 뺍니다. (--include-audio로 다시 켭니다.)
--video-codec h264, hevc, vp9, av1, mpeg4-part2, prores 컨테이너 기본값 컨테이너가 지원하는 것(아래 표). prores는 422 HQ, --alpha와 함께면 4444입니다.
--alpha 꺼짐 투명도를 유지합니다. 프로젝트 배경 없이 그리고 알파 평면과 함께 씁니다. WebM이나 Matroska의 vp9, 또는 prores(4444)만 됩니다.
--bit-depth 8, 10 prores는 10, 그 외 8 hevc, av1, vp9, prores의 10비트 그림.
--video-encoder FFmpeg 인코더 이름 호스트가 선택 인코더 고정. 예: openh264, h264_nvenc. capabilities가 그 코덱용으로 알려 주는 인코더여야 합니다.
--video-quality very-low, low, medium, high, very-high, 또는 초당 비트 high 단계를 주면 호스트가 코덱, 크기, 프레임 레이트에 맞는 비트레이트로 바꿉니다. 숫자는 비트레이트입니다.
--video-quantizer 정수, 0~255 없음 코덱 척도의 고정 양자화값. 대체값으로 --video-quality <bits-per-second>가 필요합니다.
--audio-codec aac, opus 컨테이너 기본값
--audio-quality 단계, 또는 초당 비트 high
--loudness-target LUFS, −60~0 없음 오디오를 이 통합 라우드니스로 정규화합니다(EBU R128 / ITU-R BS.1770-4).
--true-peak-ceiling dBTP, −20~0 -1 --loudness-target의 트루 피크 상한. 그 플래그와 함께만 씁니다.

컨테이너는 주요 플레이어가 그 컨테이너에서 재생하는 코덱만 지원합니다. 각 칸의 첫 번째가 기본값입니다.

컨테이너 비디오 오디오
mp4 h264, hevc, vp9, av1, mpeg4-part2 aac, opus
mov h264, hevc, mpeg4-part2, prores aac
mkv h264, hevc, vp9, av1, mpeg4-part2 aac, opus
webm vp9, av1 opus

컨테이너가 지원하지 않거나 이 호스트가 인코딩할 수 없는 코덱은 아무것도 열기 전에 INVALID_INPUT으로 거부됩니다.

플래그 값 기본값 의미
--renderer auto, gpu, cpu ALPHA2_RENDERER, 없으면 auto auto는 하드웨어 GPU가 있으면 GPU로, 없으면 CPU로 렌더링하며 소프트웨어 어댑터는 쓰지 않습니다. gpu는 아무 어댑터나 쓰고 없으면 GPU_INIT_FAILED로 실패합니다. cpu는 그래픽 드라이버를 열지 않습니다.
--video-decode software, auto, hardware-required ALPHA2_VIDEO_DECODE, 없으면 Linux·macOS는 auto, Windows는 software 비디오 디코딩 방식. hardware-required는 CPU로 디코딩하는 대신 실패합니다.
--input-policy auto, gpu-required, cpu-readback auto 프레임이 인코더로 가는 방식. auto는 가능하면 GPU에 두고 아니면 리드백합니다. gpu-required는 그 대신 GPU_OUTPUT_UNAVAILABLE로 실패하고, cpu-readback은 항상 리드백합니다.
--strategy render, prefer-copy, require-copy render prefer-copy는 범위가 소스를 손대지 않고 보여 주면 압축 패킷을 복사하고, 아니면 렌더링합니다. require-copy는 렌더링하는 대신 COPY_INELIGIBLE로 실패합니다.
--render-cache 디렉터리 없음 렌더링한 프레임을 보관해, 같은 호스트 빌드가 같은 GPU에서 같은 프로젝트·파일·이펙트를 다시 export할 때 재사용합니다.
--render-cache-quota 바이트 4 GiB 캐시 크기 한도. --render-cache와 함께만 씁니다.
--render-cache-backlog skip, wait skip 캐시 기록기가 가득 찼을 때 skip은 그 프레임을 캐시하지 않고, wait은 기록기에 자리가 날 때까지 export를 기다리게 합니다. --render-cache와 함께만 씁니다.
터미널 창
alpha2-host conform --project project.json --asset video-1=clip.mp4

{"ok": <ready>, "result": {"catalog": ..., "report": ...}}를 출력합니다. 호스트가 소스마다 찾은 것과, 소스마다 용도에 따라 읽을 것과 그 문제점입니다. 미디어가 준비되면 0으로, 막는 문제가 있으면 표준 오류에 CONFORM_FAILED 메시지를 남기고 1로 종료합니다. GPU는 필요 없습니다.

플래그 값 기본값 의미
--project 경로 필수 export와 같습니다.
--asset <source-id>=<path> 없음 export와 같습니다.
--proxy <source-id>=<path> 없음 export와 같습니다.
--frames <source-id>=<path>,... 없음 export와 같습니다.
--purpose preview, preview-proxy, thumbnail, remote-edit, export-original, export-proxy export-original 미디어를 읽는 용도.
--video-decode software, auto, hardware-required export와 같음

conform은 export와 같은 플래그를 파싱하고, 나머지는 무시합니다.

alpha2-host serve는 플래그를 받지 않습니다. 먼저 {"protocolVersion":1,"type":"ready"}를 쓰고, 표준 입력이 끝날 때까지 capabilities, conform, export, still, cancel 요청에 응답합니다. 렌더러와 디코딩 방식은 ALPHA2_RENDERER와 ALPHA2_VIDEO_DECODE에서 정합니다. 호스트 프로토콜을 참고하십시오.

GPU 인코딩이 포함된 빌드에는 alpha2-host probe-gpu-encode [width] [height](기본값 1920×1080)도 있습니다. GPU 상주 인코딩 경로를 시험하고 결과를 알려 줍니다. 사용법 텍스트에는 나오지 않으며, 머신을 진단하는 용도입니다.

변수 의미
ALPHA2_RENDERER --renderer가 없을 때(그리고 serve에서는 항상) 쓰는 auto, gpu, cpu.
ALPHA2_VIDEO_DECODE --video-decode가 없을 때 쓰는 software, auto, hardware-required.
ALPHA2_RENDER_THREADS CPU 렌더러의 스레드 수. 기본값은 프로세스가 쓸 수 있는 모든 스레드입니다.
ALPHA2_GPU_ADAPTER GPU가 여럿일 때 렌더링할 GPU. auto(Linux·macOS 기본값), performance(Windows 기본값), 숫자(어댑터 순번), 또는 어댑터 이름에 포함된 텍스트. 어떤 어댑터도 가리키지 않으면 어댑터 목록과 함께 INVALID_INPUT으로 실패합니다.
ALPHA2_GPU_WATCHDOG_MS 호스트가 가정하는 GPU 워치독, 기본값 2000ms. 디바이스 손실 직전에 그 절반 동안 GPU를 붙잡은 제출이 있으면 GPU_DEVICE_HUNG으로 실패합니다.
ALPHA2_DECODER_SESSION_BYTES 디코더 세션 예산, 기본값 4 GiB.
ALPHA2_DECODER_SESSIONS 예산 대신 지정하는 비디오 디코더 세션 수, 1~32.
ALPHA2_OPENH264 0이면 호스트가 OpenH264를 쓰지 않습니다.
ALPHA2_OPENH264_LIBRARY 불러올 OpenH264 라이브러리 경로. ALPHA2_OPENH264_UNVERIFIED=1이 아니면 SHA-256이 Cisco의 것이어야 합니다.
ALPHA2_VIDEO_ENCODER_HYBRID Windows에서 hardware로 두면 Media Foundation의 하드웨어 H.264 인코더를 요청합니다.
ALPHA2_HOST_CACHE_DIR npx @alpha2-sh/node install과 python -m alpha2 install이 푸는 캐시. 호스트가 OpenH264를 찾는 곳이기도 합니다.
상태 경우
0 성공. conform에서는 미디어가 준비됨.
1 모든 실패: 잘못된 플래그나 입력, 없는 미디어, 실패한 export, CONFORM_FAILED. GPU 디바이스를 잃었거나 디코더·인코더 스레드가 멈춘 호스트도 응답한 뒤 1로 종료합니다.
70 GPU_INIT_FAILED: 호스트가 GPU 디바이스를 만들지 못함.
101 호스트 패닉(결함).
128 + 시그널 Linux·macOS에서 시그널로 취소됨: SIGINT는 130, SIGTERM은 143. 실행 중인 export는 먼저 멈추고 부분 파일을 지웁니다.
130, 143 Windows의 콘솔 제어 이벤트: 콘솔이 닫히는 중이면 143, 아니면 130.

serve는 자신을 시작한 프로세스가 종료되어도 상태 143으로 종료합니다.

alpha2 probe <media>
alpha2 thumbnail <media> <out.png> [--auto | --at <source-seconds>]
alpha2 transcode <media> <out.mp4|.mov|.mkv|.webm> [--proxy half|quarter] [--video-codec <id>]
alpha2 export-audio <media> <out.wav>
alpha2 waveform <media> [bucket-ms] [levels]
명령 하는 일
probe <media> 컨테이너, 길이, 스트림(코덱, 크기, 프레임 레이트, 색)을 출력합니다. 길이는 틱 단위입니다.
thumbnail <media> <out.png> [--at <seconds>] 프레임 하나를 PNG로 씁니다. 소스 자체 타임라인의 특정 시점 프레임, 또는 기본값(--auto)으로 영상 전체에 퍼진 아홉 프레임 중 검거나 희지 않은 가장 선명한 프레임입니다.
transcode <media> <out> [--proxy half|quarter] [--video-codec <id>] 영상을 원래 크기로, 또는 프록시용으로 절반이나 4분의 1 크기로 다시 인코딩해, 출력 확장자가 가리키는 컨테이너에 씁니다. --video-codec이 없으면 런타임에 메모리의 프레임을 받는 인코더가 있을 때 컨테이너 기본 코덱(H.264, WebM은 VP9)을 쓰고, 없으면 컨테이너가 지원하는 다른 코덱을 쓰며 무엇을 썼는지 출력합니다. HDR 입력은 거부합니다.
export-audio <media> <out.wav> 오디오를 48kHz로 리샘플링해 소스의 0초부터 시작하는 WAV 파일로 디코딩합니다.
waveform <media> [bucket-ms] [levels] 파형 요약을 JSON으로 출력합니다. 샘플 버킷(기본값 10ms)마다 최소, 최대, RMS를 그 크기와, 직전의 네 배씩 굵어지는 단계(기본값 6단계)로 냅니다.

사용법 텍스트에는 머신과 파일을 점검하는 명령도 있습니다. decode와 decode-audio(모든 프레임이나 샘플을 디코딩하고 개수를 출력), render <media> <out.png>(첫 비디오 프레임을 PNG로), probe-encoders [width] [height](어떤 비디오 인코더가 열리고 인코딩하는지, 기본값 1920×1080), 그리고 Linux의 probe-hwdecode <media> [frame-limit](Vulkan Video 디코딩, 기본값 120프레임)입니다.

디코딩하는 명령(decode, decode-audio, render, thumbnail, transcode, export-audio, waveform)은 --decode-policy strict|tolerant를 받습니다.

값 의미
strict 처음 만난 손상된 입력에서 실패합니다. ALPHA2_DECODE_POLICY가 다르게 정하지 않으면 기본값입니다.
tolerant 손상된 입력을 건너뛰고, 명령이 끝날 때 건너뛴 것을 보고합니다.

alpha2는 성공하면 0, 실패하면 1로 종료하며 메시지는 표준 오류로 갑니다.

클라이언트 패키지에도 작은 명령줄이 있습니다.

명령 하는 일
npx @alpha2-sh/node install [--openh264] [--force] 패키지 버전의 alpha2-host 아카이브를 호스트 캐시에 내려받습니다. --openh264면 Cisco의 OpenH264를 내려받습니다. --force는 다시 내려받습니다.
python -m alpha2 install [--openh264] [--force] Python에서 같은 캐시에 같은 일을 합니다.
python -m alpha2 export <project> <output> --asset, --font, --start-ticks, --end-ticks, --no-audio, --video-codec, --video-quality, --json, --host와 함께 export합니다.
python -m alpha2 still <project> <output.png> --at <seconds> 프레임 하나를 PNG로 렌더링합니다. --asset, --font, --size <w> <h>, --overwrite, --json, --host를 받습니다.
python -m alpha2 capabilities 호스트가 디코딩·인코딩할 수 있는 것을 출력합니다.