본문 바로가기

MMD 관련 (블렌더 제외)

0-255색공간을 유지하는 ffmpeg 인코딩 옵션

ffdshow를 통해서 MJPEG로 인코딩하면 색공간 yuvj420p로 출력되는 영상이 나오던데, 이것을 그냥 아무런 처리도 안하고 다른 포맷으로 인코딩해버리면 색영역이 16-235로 줄어드는 현상이 있더군요. 기본값이 이상한건가?... 다른 인코딩 프로그램도 이런지는 잘 모르겠습니다. ffmpeg는 기본설정이 이렇더군요.


유튜브에 아무런 처리도 안하고 바로 MJPG코덱인 파일을 업로드하면 마찬가지로 16-235로 줄어듭니다.

색공간 명칭, yuvj420p 같은데에서 j가 들어가면 간접적으로 0-255범위를 뜻하긴 하는데 이걸 그대로 유튜브에 올리면 yuv420p로 변환하는 과정에서 16-235로 바꿔버리더군요.


색범위가 16-235가 되면, 완전한 검은색은 약간 하얗게 떠보이고, 완전한 흰색은 약간 바래져보이게 됩니다.

색영역을 0-255로 유지하려면 인코딩시에 아래에 빨갛게 표시한 옵션을 집어넣으면 됩니다.


ffmpeg_x64 -i <input> -c:v libx264 -pix_fmt yuv420p -src_range 1 -dst_range 1 -b:v 30000k <output>


유튜브에 업로드하기전에 색공간 이름에 j가 들어있으면 색범위를 줄여버리기 때문에 업로드 전에는 이걸 꼭 yuv420p로 변환하여 업로드합시다.


아래는 업로드한 예시 MMD 영상. 배경색이 완벽한 255,255,255입니다.