픽셀 포맷은 이미지나 비디오의 원시 픽처 데이터에서 각 픽셀의 구성 방식입니다. 어떤 색상 구성 요소가 있고 각 구성 요소가 몇 비트를 사용하는지 프로그램에 알려 줍니다.
비디오 리포트에서는 이 필드를 pix_fmt처럼 표시하고, yuv420p와 같은 값을 사용합니다. 이런 값은 색상 모델, 색차 서브샘플링(chroma subsampling), 비트 심도(bit depth)를 나타냅니다. 색 공간(color space)은 별도의 필드입니다.
어떤 파일에 포함되어 있는지
FFmpeg의 ffprobe 프로그램은 각 비디오 스트림에 대해 pix_fmt 값을 나열합니다. MP4, MOV, MKV, WebM 파일이 여기에 포함됩니다.
이미지도 값을 보고합니다. FFmpeg은 4:2:0 샘플링이 있는 JPEG에는 yuvj420p를, 8비트 RGB PNG에는 rgb24를 부여합니다.
커버 아트가 있는 오디오 파일도 픽셀 포맷을 보고할 수 있습니다. FFmpeg은 해당 이미지를 비디오 스트림으로 처리합니다.
ExifTool은 Windows HD Photo 파일(HDP, WDP)에서 PixelFormat라는 태그를 읽습니다. 이 태그에는 24-bit RGB, 8-bit Gray 같은 값이 표시됩니다.
값이 어떻게 표시되는지
FFmpeg은 짧은 요소를 조합해 이름을 구성합니다. 값 yuv420p10le는 5개의 요소로 이루어져 있습니다.
yuv: 색상 모델입니다. Y는 밝기이고, U와 V는 색상을 담습니다. U와 V는 YCbCr에서처럼 Cb와 Cr이라고도 부릅니다.420: 샘플링입니다. 색상 데이터는 밝기 데이터보다 가로와 세로가 각각 절반입니다.p: 플래너(planar)입니다. 각 구성 요소가 별도의 평면을 가집니다. 패키드(packed) 포맷은 구성 요소를 하나의 배열에 함께 저장합니다.10: 각 구성 요소의 비트 수입니다. 값yuv420p는 여기 숫자가 없으며 8비트를 사용합니다.le: 바이트 순서로, 리틀 엔디언입니다. 끝이be이면 빅 엔디언을 의미합니다.
일반적인 값
아래 숫자는 원시 픽처 데이터에서 픽셀당 평균 비트 수입니다.
yuv420p: 12비트, 색상 데이터는 가로와 세로가 모두 절반yuv422p: 16비트, 색상 데이터는 가로가 절반yuv444p: 24비트, 모든 픽셀에 색상 정보 포함yuvj420p: 12비트, JPEG에서 사용하는 전체 범위(full range)의yuv420p레이아웃rgb24: 24비트, 패키드 방식의 빨강, 초록, 파랑rgba: 32비트, 투명도를 위한 알파 값이 추가됨gray: 8비트, 밝기만 포함pal8: 8비트, 각 값이 팔레트 색상을 가리킴
전체 범위에서는 8비트 밝기가 0에서 255까지입니다. 제한 범위에서는 16에서 235까지입니다. FFmpeg은 yuvj 이름 대신 별도의 범위 필드를 사용할 것을 권장합니다.
값이 어디에서 오는지
스트림을 인코딩하는 프로그램이 픽셀 포맷을 결정합니다. FFmpeg에서는 -pix_fmt 옵션으로 선택합니다.
이 이름 자체는 보통 파일에 그대로 저장되지 않습니다. 읽는 프로그램이 저장된 세부 정보를 바탕으로 이름을 만듭니다.
H.264의 경우, FFmpeg은 스트림 헤더의 비트 심도와 크로마 포맷을 사용합니다. PNG의 경우, 이미지 헤더의 비트 심도와 색상 타입을 사용합니다.
내 파일에 왜 중요한지
픽셀 포맷은 원시 픽처 데이터의 크기를 결정합니다. rgb24 프레임은 픽셀당 24비트이고, yuv420p 프레임은 12비트입니다. 이후 코덱이 이 데이터를 압축하므로, 이 숫자만으로 최종 파일 크기를 알 수는 없습니다.
픽셀 포맷은 파일이 유지하는 색상 세부 정보의 정도도 결정합니다. 사람의 눈은 색상보다 밝기에서 훨씬 더 많은 디테일을 구분하므로, 4:2:0은 눈에 띄는 손실이 거의 없습니다.
4:2:0을 4:4:4로 변환하면, 프로그램이 주변 샘플을 바탕으로 누락된 샘플을 계산합니다. 4:2:0으로 인해 제거된 색상 디테일은 그대로 손실된 상태입니다.
H.264 프로필도 이 값을 확인해야 하는 또 다른 이유입니다. Main 및 High 프로필은 4:2:0 샘플링의 8비트 색상을 지원합니다.
yuv444p 또는 yuv420p10le의 H.264 스트림에는 더 높은 프로필이 필요합니다. Apple의 HLS 규칙은 High 프로필 이하의 H.264를 요구합니다. YouTube는 업로드 시 4:2:0의 High 프로필을 권장합니다.