HDR인 원본 영상을 화질을 조금만 희생하면서 용량을 크게 줄이기 위해 같은 HDR 영상으로 (그중에서도 TV 용 공개 표준인 HDR10으로) 트랜스코딩(HDR => HDR)하는 프리셋입니다.
프리셋 파일 다운로드: HDR10 HEVC crf 18 1080p HE-AAC 44.1 64k.xml
HDR to HDR (HDR10) 트랜스코딩 때 고려해야 할 것은 세 가지입니다.
1. Output이 사용할 정확한 색 공간 정보(primaries와 color matrix, transfer characteristics)를 주기
2. TV 재생을 위해 TV 재생에 필요한 static metadata가 비디오 스트림에 들어갈 수 있도록 인코더에 매개변수로 넣어 주기 (HDR TV 공개 표준인 HDR10에 맞추는 작업. -x265-params에 들어가는 색 공간 정보 매개변수들, master-display, max-cll 옵션 설정 등)
3. Output 동영상의 픽셀 포맷을 10비트로 맞춰 주기 ('-pix_fmt yuv420p10le' 옵션과 HEVC 프로파일을 bit depth 10을 지원하는 'Main 10'으로 맞춰 주기)
Target 미디어가 굳이 TV가 아닌 경우 (예를 들어 HDR 지원이 가능한 HDR 컴퓨터 모니터 또는 HDR 영상의 소프트웨어 셰이딩/렌더링 처리가 가능한 컴퓨터 모니터) 위의 세 가지 사항 중 2번은 생략해도 됩니다. 2번을 넣는 이유는 HDR10을 지원하는 HDR HDTV가 HDR 동영상을 자동으로 HDR로 인식하도록 하기 위함입니다.
(참고로, HDR 영상을 SDR 모니터로 감상할 경우 렌더러가 시원찮거나 셰이딩 처리를 소프트웨어적으로 제대로 해주지 못하는 프로그램으로 볼 경우 영상의 색감이 상당히 떨어집니다. 팟플레이어의 경우 픽셀 셰이더 설정에서 'HDR SMPTE ST 2084/2086 자동 보정'으로 어느 정도 색감 저하를 막을 수 있습니다.)
HDR 영상에 대한 자세한 내용은 해당 위키피디어 문서를 참조하십시오.
https://en.wikipedia.org/wiki/High-dynamic-range_video
---------------------------------------------------------------------------------------------------------
파일 형식은 MP4, 비디오 코덱은 HEVC(x265), 오디오는 44.1kHz, 64kbps 스테레오 HE-AAC 오디오입니다.
비디오 코덱을 x264로 하지 않은 이유는 샤나의 libx264가 HDR10 인코딩을 할 수 있는지 알 수 없어서입니다.
필터 매개변수에 대한 설명은 아래와 같습니다. (오디오 부분은 생략)
=============================================================================
scale=1920:-1:flags=spline:out_color_matrix=bt2020_ncl
// 1080p로 해상도 변경, 알고리듬을 spline으로
// 해상도 변경시 color matrix를 HDR 용인 bt2020_ncl로
// 해상도 변경을 하지 않을 경우 지워도 무방
setsar=1/1
// 레터박스 사용 안 함
shanasubtitle=0
=============================================================================
인코딩 옵션 설정에 대한 설명은 다음과 같습니다. (뻔한 부분은 생략)
=============================================================================
-f mp4
-c:v libx265 -libx265main10 -crf 18.0 -preset slower -tune:v none
// HDR 영상의 bit depth 10을 지원하는 Main 10 프로파일 선택
// crf와 preset은 필요에 따라 조정할 것
-pix_fmt yuv420p10le
// HDR 영상의 10 bit depth를 가지는 픽셀 포맷을 보존
-color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc
// Output이 사용하는 색 공간 정보 설정
// 전역 metadata로 기록됨
-color_range tv
// Output의 color range를 tv로 설정
// 원본이 TV 녹화 영상인 경우 생략
-x265-params me=umh:qcomp=0.6:scenecut=40:bframes=3:min-keyint=15:keyint=150:colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc:master-display="G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,500)"
// x265의 추가 인코딩 옵션값들
// http://x265.readthedocs.io/en/default/cli.html 참조
// me=umh:qcomp=0.6:scenecut=40:bframes=3:min-keyint=15:keyint=150 부분은
// 화질 향상을 위한 frame control, rate control, motion estimation control 부분이므로
// 본인이 조정하거나 생략 가능 (삭제시 뒤의 구분자 ':'를 포함해서 삭제할 것)
// colorprim=bt2020:transfer=smpte2084:colormatrix=bt2020nc 부분은
// x265가 참고할 output의 색 정보 부분
// HDR10 표준에 맞추려면 반드시 들어가야 함
// master-display="G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,500)" 부분은
// TV 재생에 필요한 static metadata가 비디오 스트림에 들어갈 수 있도록 한 것 (SMPTE ST 2086)
// 설정값들은 원본의 mastering display에 따라 달라져야 하나 대개 대동소이함
// 거의 대부분 밝기 부분인 L(최대 cd/m2 X 10000, 최소 cd/m2 X 10000) 만 값을 변경
// 역시 HDR10 표준에 맞추기 위한 부분
// TV에서 재생할 게 아니라서 HDR10 표준에 굳이 맞출 필요가 없다면 생략 가능 (삭제시 앞의 구분자 ':'를 포함해서 삭제할 것)
-c:a libfdk_aac -b:a 64k -ac 2 -fdkprofile he
-tag:v hvc1
-sn -metadata creation_time=now
-metadata:s:v:0 language=kor
-metadata:s:a:0 language=kor
// 위의 설정들은 다른 프리셋을 참고할 것
=============================================================================
이상입니다.
-------------------------------------------------------------------------
<주의하실 점>
원본 동영상의 오디오가 AAC라도 먹싱 모드가 'ADTS'일 경우(파일 형식이 ts인 경우) 오디오를 스트림 복사로 설정하면 인코딩 시 에러가 납니다.
그때는 오디오를 반드시 함께 인코딩해 주십시오.