피드로 돌아가기
I built a CLI tool so I never have to write FFmpeg commands again
Dev.toDev.to
DevOps

I built a CLI tool so I never have to write FFmpeg commands again

개발자가 FFmpeg 플래그 암기와 반복적인 명령어 작성을 제거하기 위해 VidX라는 대화형 CLI 도구를 개발해 웹 비디오 최적화 프로세스 자동화

Muhammad Usman2026년 3월 25일7beginner

Context

FFmpeg는 강력하지만 웹 개발자가 웹용 비디오를 압축하려면 libx264, libvpx-vp9, CRF 값, -movflags +faststart, -pix_fmt yuv420p 등 수십 개의 플래그를 프로젝트마다 반복해서 작성해야 한다. 프로젝트별로 MP4와 WebM 두 형식을 모두 생성하거나 4K 비디오를 스케일링할 때 마다 별도의 명령어를 다시 작성하는 마찰이 발생한다.

Technical Solution

  • 대화형 CLI 인터페이스 도입: Node.js와 @inquirer/prompts를 사용해 터미널에서 마우스 없이 비디오 선택, 포맷·품질·해상도 설정을 메뉴 형식으로 진행
  • 자동 비디오 감지: fast-glob으로 프로젝트 내 모든 비디오 파일을 스캔하고 파일 크기 순으로 정렬해 표시
  • 프리셋 기반 설정: Web Optimized, High Quality, Small File 3개 프리셋을 제공하며 각 프리셋은 CRF 값, 비트레이트, 코덱 설정을 사전 튜닝
  • FFmpeg 자동 감지 및 번들링: 시스템에 FFmpeg가 설치되어 있으면 사용하고, 없으면 bundled static 바이너리(ffmpeg-static)로 자동 폴백해 추가 설정 제거
  • 양식 자동화 지원: -c:v libx264 -crf 23 -preset slow -movflags +faststart -c:a aac -b:a 128k, scale=-2:720 (가로세로 비율 유지, 너비 2의 배수 보장) 같은 필수 플래그를 내부적으로 적용
  • 다중 포맷 동시 생성: "Both" 옵션 선택 시 하나의 실행으로 MP4와 WebM 형식을 동시 생성
  • CI/CD 비상호작용 모드: --preset webOptimized --format both --resolution 720p --yes 플래그로 빌드 파이프라인에서 사용 가능
  • 설정 파일 지원: .vidxrc 파일로 프로젝트별 선호 프리셋을 저장해 다음 실행 시 확인만 하면 진행 가능
  • 진행률 표시 및 학습용 명령어 출력: cli-progress + ora로 파일별 진행률과 ETA 표시, 실행 후 정확한 FFmpeg 명령어와 압축률을 요약 표시

Impact

아티클의 예시에서 hero-banner.mp4 48.2 MB가 4.1 MB(91% 축소), hero-banner.webm이 2.8 MB(94% 축소)로 압축되었으며 2개 비디오 처리에 43초 소요.

Key Takeaway

복잡한 CLI 도구의 사용성 장벽은 프리셋화, 대화형 UI, 자동 감지를 조합해 제거할 수 있다. FFmpeg 같이 강력하지만 불친화적인 도구 위에 개발자 경험 계층을 추가하면 반복적인 설정 작업을 제거하면서도 원본 도구의 기능과 유연성을 유지할 수 있다.


웹 개발 팀에서 비디오 최적화 작업이 반복될 때 VidX를 도입하면 매 프로젝트마다 FFmpeg 명령어를 작성하는 시간 제거, 프리셋을 통한 일관된 인코딩 설정 보장, --dry-run으로 명령어 검증 후 실행 가능, CI/CD 파이프라인에 비상호작용 모드로 통합해 수동 개입을 0으로 줄일 수 있다.

원문 읽기