소개
Video Viewer는 Rust + egui로 제작된 네이티브 Raw/YUV/RGB 비디오 뷰어로, babyworm이 GitHub에서 공개한 오픈소스 프로젝트입니다. 이 프로그램은 I420, NV12, YUY2 등 75개 이상의 픽셀 포맷과 PPM/PNG 같은 이미지 형식을 자동 감지하여 비압축 영상 데이터를 정밀하게 검사할 수 있도록 돕습니다. 히스토그램, 웨이브폼, 벡터스코프, PSNR/SSIM 같은 전문가용 분석 도구와 ISP 사이드밴드 CTU 히트맵 오버레이를 함께 제공하여 영상 품질 검토와 비교 작업에 활용할 수 있습니다.
상세정보
픽셀 포맷과 자동 감지
- I420, NV12, NV21, YUY2, UYVY, P010 등 YUV 플래너/세미플래너/패킹 포맷과 RGB, BGR, RGBA 계열, 8/10/12/16비트 Bayer 20종, 그레이스케일을 포함해 75개 이상의 픽셀 포맷 지원
- Y4M 헤더와 PPM, PNG, JPEG, BMP, GIF, TIFF, WebP 같은 이미지 파일에서 파라미터 자동 인식
- 파일 크기로 해상도를 추정하고 파일명에서 해상도·포맷·프레임 레이트를 추출하는 지능형 자동 감지
- BT.601과 BT.709 YUV-RGB 컬러 매트릭스 선택
보기와 탐색
- Y/U/V 또는 R/G/B 채널을 각각 분리해 의사색상(False Color)으로 표시
- 전체 + 3채널을 동시에 보여주는 2×2 분할 화면(단축키 4)
- 커서 기준 마우스 휠 줌, +/- 버튼, 1:1·2:1 프리셋 및 가운데 클릭 드래그로 화면 이동
- 창 크기 변경 시 자동 맞춤(Auto-fit)과 화면 중심 이동(단축키 C)
픽셀 검사 도구
- 커서 주변 8×8 이웃 픽셀 그리드와 십자선 표시, 그리드 경계 색상 시각화
- 커서 위치의 Y/U/V 또는 R/G/B 성분 값과 원시 16진수 바이트 표시
- 8배 돋보기 오버레이 토글(단축키 M)
분석 도구
- RGB와 루마 분포를 보여주는 히스토그램, 컬럼별 픽셀 값 분포를 나타내는 루마 웨이브폼 모니터
- BT.709 Cb-Cr 산점도를 원점 기준으로 표시하는 벡터스코프와 ±128 경계 박스
- 연속 프레임 간 PSNR, SSIM, 프레임 차이 계산
- 레퍼런스와 현재 영상을 나란히 비교하는 비디오 디프 기능: 부호 있는 루마 차이, MS-PSNR, MS-SSIM, 의존성 없는 VMAF-NEG 프록시 히트맵 제공
- 모든 분석 플롯의 줌·이동·Reset View 제어
그리드 오버레이와 비교·내보내기
- Off/128/64/32/16 픽셀 단위로 순환하는 메인 그리드(단축키 G)와 4/8/16 픽셀 단위 서브 그리드
- 레퍼런스/현재/차이를 한 화면에 보여주는 3패널 A/B 비교 화면
- 포맷 간 변환과 백그라운드 진행률 추적, 프레임을 PNG로 저장
기타 편의 기능
- 프레임 북마크와 장면 변화 자동 감지
- foreman, akiyo, bus 등 derf YUV 컬렉션의 표준 테스트 시퀀스 다운로드
- 메뉴에서 토글 가능한 다크/라이트 테마, 윈도우 타이틀 바로 통합된 메뉴 바
사전 빌드 바이너리 설치
Releases 페이지에서 운영체제별 아카이브를 내려받아 압축을 해제하면 별도의 설치 절차 없이 실행할 수 있습니다. Windows용 패키지는 x86_64 ZIP 형태로 제공됩니다.
Windows에서 winget으로 설치
PowerShell에서 다음 명령으로 설치할 수 있습니다.
- winget install babyworm.VideoViewer
소스에서 빌드
Rust 1.75 이상을 설치한 뒤 운영체제에 맞는 시스템 라이브러리를 준비하고 rust 디렉터리에서 빌드합니다.
- Ubuntu/Debian: libxcb-render0-dev, libxcb-shape0-dev, libxcb-xfixes0-dev, libxkbcommon-dev, libssl-dev, libgtk-3-dev 설치
- Fedora: libxcb-devel, libxkbcommon-devel, openssl-devel, gtk3-devel 설치
- Arch Linux: libxcb, libxkbcommon, openssl, gtk3 설치
- macOS: 추가 종속성 없음
GUI 모드
Y4M 파일을 열면 매개변수를 자동으로 감지하고, Raw YUV 파일은 폭과 높이, 포맷을 직접 지정해 재생합니다.
- video-viewer input.y4m — Y4M 자동 감지
- video-viewer input.yuv -W 1920 -H 1080 –format I420 — Raw YUV 수동 지정
헤드리스 변환
출력 파일을 지정하면 GUI 없이 포맷 변환만 수행합니다.
- video-viewer input.yuv -W 1920 -H 1080 –vi I420 –vo NV12 -o output.nv12
주요 키보드 단축키
- Space: 재생/일시정지, Left/Right: 이전/다음 프레임, Home/End: 첫/마지막 프레임
- 0: 전체 채널, 1/2/3: Y/R, U/G, V/B 채널, 4: 2×2 분할 화면
- F: 화면에 맞추기, C: 화면 중심, G: 그리드 오버레이 순환, M: 돋보기 토글, B: 북마크 토글
- Ctrl+O: 파일 열기, Ctrl+S: 현재 프레임을 PNG로 저장, Ctrl+C: 클립보드 복사, Ctrl+Q: 종료
어떤 파일 포맷을 지원하나요?
YUV 플래너(I420, YV12, YUV422P 등), YUV 세미플래너(NV12, NV21, P010, P016 등), YUV 패킹(YUYV, UYVY, AYUV, VUYA, Y210), RGB와 BGR 변형, 8~16비트 Bayer 20종, 그레이스케일, 그리고 PPM, PNG, JPEG, BMP, GIF, TIFF, WebP 같은 이미지 포맷을 지원합니다.
ISP 사이드밴드 오버레이는 무엇인가요?
ISP 처리 과정에서 생성된 사이드밴드 데이터를 CTU 히트맵 형태로 영상 위에 겹쳐 보여주는 기능으로, 인코더나 ISP 파이프라인 출력의 부가 정보를 시각적으로 검토할 때 사용됩니다.
설치 없이 바로 사용할 수 있나요?
Windows, macOS, Linux용 사전 빌드 바이너리를 받아 압축을 해제하면 별도 설치 없이 바로 실행할 수 있으며, Windows에서는 winget 명령으로도 설치할 수 있습니다.
시스템 요구사항
Windows, macOS, Linux용 사전 빌드 바이너리가 제공되며 별도의 설치 과정 없이 압축을 해제해 바로 실행할 수 있습니다. 소스에서 직접 빌드하려면 Rust 1.75 이상 툴체인이 필요하고, Ubuntu/Debian 환경에서는 libxcb-render0-dev, libxcb-shape0-dev, libxcb-xfixes0-dev, libxkbcommon-dev, libssl-dev, libgtk-3-dev 패키지가 요구됩니다. Fedora에서는 libxcb-devel, libxkbcommon-devel, openssl-devel, gtk3-devel을, Arch Linux에서는 libxcb, libxkbcommon, openssl, gtk3을 설치해야 하며 macOS는 추가 종속성이 필요하지 않습니다.


