TL;DR
ezff는 FFmpeg 자연어 같은 문법 CLI 래퍼로, AI 없이 정규표현식 기반으로 동작하여 API 키·비용·지연 없이 오프라인에서 즉시 사용 가능하다. npm install -g ezff 한 줄로 설치하며, ff convert video.mp4 to gif 같은 영문 명령어를 ffmpeg 커맨드로 변환한다. 약 20가지 작업을 지원하며, 이것이 “개발자 사용 사례의 저자 추정 90%“를 커버한다고 주장하지만 검증된 수치는 아니다. 복잡한 엣지 케이스는 여전히 직접 ffmpeg 명령어를 작성해야 한다.
제품 개요: ezff란 무엇인가
ezff는 복잡한 ffmpeg CLI 명령어를 정규표현식 패턴 매칭으로 단순화하는 오프라인 도구다. LLM 기반 자연어 처리가 아니라, 사전 정의된 패턴 규칙을 통해 ff resize video.mp4 to 720p 같은 구조화된 입력을 ffmpeg 플래그로 변환한다. “자연어”처럼 보이지만 실제로는 정해진 문법 템플릿을 따르는 DSL(Domain-Specific Language)에 가깝다.
문제 정의: ffmpeg 명령어를 매번 검색하는 비용
백엔드 개발자라면 다음 상황이 낯설지 않을 것이다.
# "720p로 리사이즈하는 옵션이 뭐였더라..."
ffmpeg -i input.mp4 -vf scale=-1:720 output.mp4
# "비트레이트 조절해서 10MB 이하로 맞추려면..."
ffmpeg -i input.mp4 -fs 10M output.mp4
ffmpeg은 강력하지만 옵션 체계가 복잡하고 문법이 직관적이지 않다. 간단한 작업 하나를 위해 매번 공식 문서나 StackOverflow를 뒤지는 컨텍스트 스위칭 비용이 누적된다.
이를 해결하려는 시도는 이미 존재한다. wtffmpeg, llmpeg, ai-ffmpeg-cli 같은 도구들이 LLM을 이용해 자연어를 ffmpeg 명령어로 변환한다. 그러나 이들은 공통적인 구조적 문제를 안고 있다.
- API 키 의존: OpenAI 등 외부 서비스 계정이 필요하다
- 비용 발생: 토큰 소비에 따른 과금이 발생한다
- 지연: 네트워크 왕복 시간이 추가된다
- 오프라인 불가: 인터넷이 없는 환경(사내망, 서버 직접 접속 등)에서 동작하지 않는다
ezff는 이 문제를 LLM 없이, 정규표현식 패턴 매칭만으로 해결한다.
설치 및 사용법
설치
npm install -g ezff
Node.js 환경만 있으면 된다. 설치 후 ff 명령어로 사용한다.
기본 명령어
# 형식 변환
ff convert video.mp4 to gif
# 용량 압축
ff compress video.mp4 to 10mb
# 구간 자르기
ff trim video.mp4 from 0:30 to 1:00
# 오디오 추출
ff extract audio from video.mp4
# 해상도 조정
ff resize video.mp4 to 720p
# 배속 조정
ff speed up video.mp4 by 2x
# 영상 반전
ff reverse video.mp4
인터랙티브 모드
ff만 단독으로 입력하면 현재 폴더의 미디어 파일을 타입어헤드 검색과 함께 탐색할 수 있다. 파일명을 기억하지 못할 때 유용하다.
작동 원리: 정규표현식 패턴 매칭 메커니즘
ezff의 ffmpeg CLI 변환 로직은 LLM이 아닌 정규표현식 규칙 테이블에 기반한다.

패턴 구조 예시
입력 문자열이 들어오면 순서대로 패턴을 순회하며 첫 번째 매칭 규칙을 적용한다. 실제 소스코드에서 확인할 수 있는 패턴 구조는 다음과 같은 형태다.
// 해상도 조정: "resize video.mp4 to 720p"
{
pattern: /resize\s+(\S+)\s+to\s+(\d+)p/i,
build: (match) =>
`ffmpeg -i ${match[1]} -vf scale=-1:${match[2]} output.mp4`
}
// 구간 자르기: "trim video.mp4 from 0:30 to 1:00"
{
pattern: /trim\s+(\S+)\s+from\s+([\d:]+)\s+to\s+([\d:]+)/i,
build: (match) =>
`ffmpeg -i ${match[1]} -ss ${match[2]} -to ${match[3]} -c copy output.mp4`
}
// 용량 압축: "compress video.mp4 to 10mb"
{
pattern: /compress\s+(\S+)\s+to\s+(\d+)mb/i,
build: (match) =>
`ffmpeg -i ${match[1]} -fs ${match[2]}M output.mp4`
}
각 패턴은 캡처 그룹으로 파일명·수치·시간 값을 추출하고, build 함수가 이를 ffmpeg 플래그 문자열로 조립한다. 패턴 매칭이 실패하면 추론 없이 즉시 에러를 반환한다. 동작이 완전히 결정론적인 이유가 여기에 있다.
실무 활용: 한국 개발 환경에서의 오프라인 ffmpeg 도구
카카오, 네이버, 토스 같은 국내 서비스에서 미디어 처리 파이프라인을 다루는 개발자라면 다음 시나리오에서 실용적 가치를 확인할 수 있다.
1. 개발 머신에서 빠른 검증
썸네일 추출, 샘플 영상 변환, QA용 클립 생성 등 반복적인 로컬 작업에서 명령어를 검색하는 시간을 줄인다.
2. 보안망 내 서버 작업
금융권이나 사내망처럼 외부 인터넷 접근이 제한된 환경에서 LLM 기반 도구는 사용 자체가 불가능하다. ezff는 완전 오프라인으로 동작하므로 이 제약을 우회한다.
3. CI/CD 스크립트 보조
# GitHub Actions 또는 Jenkins 파이프라인 내
ff compress preview.mp4 to 5mb
ff extract audio from interview.mp4
API 키 관리 없이 파이프라인에 미디어 처리 단계를 추가할 수 있다. 단, 프로덕션 파이프라인에서는 명령어가 정확히 어떤 ffmpeg 플래그로 변환되는지 사전에 검증하는 것이 필수다.
한계와 주의사항
지원 범위의 한계
약 20가지 패턴 외의 작업—복잡한 필터 체인, 멀티스트림 처리, 정밀한 비트레이트 제어 등—은 직접 ffmpeg 명령어를 작성해야 한다. 저자도 “엣지 케이스는 여전히 ffmpeg을 직접 사용해야 한다”고 명시하고 있다.
‘90% 커버’ 수치에 대한 해석
원문에서 “개발자들이 ffmpeg으로 실제로 하는 작업의 90%를 커버한다”고 주장하지만, 이는 저자의 사용 패턴 분석에 기반한 검증되지 않은 추정치다. 실제 커버리지는 팀의 작업 유형에 따라 크게 달라질 수 있으며, 복잡한 인코딩 파이프라인을 주로 다루는 팀이라면 이 수치가 훨씬 낮게 체감될 수 있다.
변환 결과 검증
정규표현식 기반이므로 입력 문장의 표현 방식에 따라 예상과 다른 ffmpeg 명령어가 생성될 수 있다. 중요한 파일을 처리하기 전에 --dry-run 옵션이 있는지 확인하거나, 테스트 파일로 먼저 검증하는 습관이 필요하다.
결론
ezff는 LLM 없이 FFmpeg 자연어 같은 인터페이스를 구현한 실용적인 오프라인 CLI 도구다. AI 기반 대안들이 가진 API 의존성·비용·지연 문제를 정규표현식이라는 단순한 메커니즘으로 해결했다는 점에서 설계 판단이 흥미롭다. 모든 ffmpeg 기능을 대체하려는 도구가 아니라, 빈번하게 반복되는 20여 가지 작업의 마찰을 줄이는 데 집중한 스코프 제한이 오히려 강점이다.
ffmpeg 명령어를 매번 검색하는 데 시간을 쓰고 있다면, 설치 비용이 npm install -g ezff 한 줄인 만큼 시도해볼 가치가 있다.