질문

색공간 바꾸기에 대해 질문 드립니다.

by 김성우 posted Sep 30, 2024
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요 개인적으로 게임을 제작하고 있는 유저입니다.

 

다름이 아니오라 게임을 제작하던도중 mp4를 webm으로 변환시켜 renpy 라는 엔진으로 만들어지는 게임에 삽입하려 하는데 

 

(엔진에서 지원하는 영상 포맷이 webm 입니다.)

 

image.png

 

원본 mp4와 webm을 그냥 동영상 플레이어롭 봤을때는 화질열화가 조금 있긴 하지만 색감의 차이는 없었는데

 

동영상 플레이어로 보는 webm과 renpy 엔진에서 구동되는 webm을 보니 빨간색 필터가 씌여진 것마냥 붉게 나오는 편이더라구요 

 

그래서 검색을 해보니 renpy 엔진에서 제공되는 색공간은 bt601을 사용해서 기본적으로 색공간을 맞추지 않으면 붉게 제공된다는 말을 봤습니다.

 

찾은바에 이하면 ffmpeg 을 이용하여 표준 설정으로 뽑아낸 MP4를 BT.709와 색을 똑같게 설정해서 BT.601로 뽑아낸다고 하는것 같은데

 

Initially, I render the video in mp4 (x264) with the standard settings. Next I will convert it to Webm(vp8) using ffmpeg.

MP4를 표준으로 설정하고 렌더링 한뒤 ffmpeg 을 사용하여 Webm 으로 컨버팅합니다.

If I convert it with bt709 color space, then the video is displayed correctly everywhere, different browsers, different media players, but in Renpy the video gets color distortion.

bt709로 색공간을 지정해서 변환을 하면 비디오가 모든곳에서 색이 올바르게 표시됩니다만 renpy 엔진에서는 색이 변합니다.

ffmpeg -i video.mp4 -c:v vp8 -crf 4 -b:v 30M -colorspace bt709 -color_primaries bt709 -color_trc bt709 -color_range pc -y video_709.webm
METADATA: Video: vp8, yuv420p(pc, bt709, progressive), 2560x1440, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn, 1k tbc (default)

위에 적힌 명령문은 아마 ffmpeg에서의 명령문인것 같습니다.. 지식이 짧아 죄송합니다


If I convert it with the bt601 color space, then I need to additionally assign a filter -vf "colormatrix=bt709:smpte170m" so that the color matches the video with bt709. After conversion, the video will be displayed correctly in media players and renpy (without color distortion), but browsers will distort the color.

 

BT.601 색상 곤간으로 변환하는경우, BT.709로 뽑아낸 비디오와 색상이 일치하도록 -vf "colormatrix=bt709:smpte170m" 필터를 추가로 넣어야합니다

변환 후 비디오는 미디어 플레이어와 renpy에서 올바르게 표시되지만(색상 왜곡 없이), 브라우저에서는 색상이 왜곡됩니다.

ffmpeg -i video.mp4 -c:v vp8 -crf 4 -b:v 30M -colorspace smpte170m -color_primaries smpte170m -color_trc smpte170m -color_range pc -vf "colormatrix=bt709:smpte170m" -y video_601.webm
METADATA: Video: vp8, yuv420p(pc, smpte170m, progressive), 2560x1440, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn, 1k tbc (default)

바로 위 명령어인 Smpte170m 은 BT.601 NTSC 입니다.

 

저는 최종적으로 MP4 (1920 X 1080 30PS)의 MP4를 WEBM (V9) (1920 X 1080 30PS) 으로 BT.601의 색공간을 가지는 영상으로 변환시키고 싶습니다.

 

어떻게 설정을 하고 인코딩을 해야할까요 고수분들의 도움이 필요합니다

 

(제가 가지고 있는 MP4의 정보입니다. 모든 영상이 같은 비슷한 용량을 가지고있습니다.)

2024-09-30 11,28,59.JPG

2024-09-30 11,29,08.JPG

2024-09-30 11,29,17.JPG

2024-09-30 11,28,48.JPG