조회 수 4560 추천 수 0 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

이 내용을 여기 올려야 하나 잠시 고민했습니다만, 그래도 샤나와 연관이 있는 것이어서 올립니다.

 

 

프리셋 자료실에 올라온 HDR->SDR 변환 프리셋은 샤나의 한계 때문에 tonemapzscale 필터를 이용하지 못한 반쪽자리입니다. 원본의 색 정보를 제대로 살리지 못해 인코딩 결과물이 형편없죠.

 

HDR의 기본 색공간인 BT.2020은 SDR HDTV의 기본 색공간 BT.709(=sRGB)을 포함하는 데다 BT.709가 표현하지 못하는 많은 색상을 더 표현할 수 있기 때문에 HDR을 SDR로 변환할 때는 바로 그 BT.709의 범위 밖(out-of-range) 색상들을 어떻게 처리하냐가 최대 관건입니다.

 

이에 대해 가장 무난한 해법은 바로 tonemap 필터를 이용해 범위 밖 색상들을 범위 안으로 적절하게 mapping하는 것이고, zscale 필터는 tonemap 필터의 결과물을 사용가능한 형식으로 변환하는 동시에 자체적으로 색공간 변환을 수행하기 때문에 필요한 것입니다.

 

자세한 사항은 아래 문서를 참고하시면 됩니다.

 

https://stevens.li/guides/video/converting-hdr-to-sdr-with-ffmpeg/

 

 

 

위의 권고안을 바탕으로 다음의 FFmpeg 명령어를 구성해서 DOS 환경에서 실행했습니다.

 


 

ffmpeg.exe -analyzeduration 100M -probesize 50M -i LG_New_York_HDR_UHD_4K_Demo.OriginalHDR.ts -vf zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=1920:-1:f=spline36:t=bt709:m=bt709,format=yuv420p -c:v libx264 -profile:v high -crf 18.0 -preset veryslow -x264opts deblock=1,1:cabac:keyint=150:min-keyint=15:bframes=3:b-adapt=2:weightb:weightp=2:ref=4:scenecut=50:ipratio=1.4:pbratio=1.3:qcomp=0.50:rc-lookahead=30:mbtree:aq-mode=2:aq-strength=0.8:chroma-me:merange=24:me=umh:subme=10:direct=auto:trellis=2:psy-rd=0.30,0:psy:no-dct-decimate:no-fast-pskip:mixed-refs:partitions=all -pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709 -c:a aac -b:a 128k -ac 2 -map_metadata -1 -metadata creation_time=now -metadata:s:v:0 language=kor -metadata:s:a:0 language=kor -y LG_New_York_HDR_UHD_4K_Demo.TranscodedSDR.tonemapped.1080p.mp4

 


 

LG_New_York_HDR_UHD_4K_Demo.OriginalHDR.ts가 input file이고 LG_New_York_HDR_UHD_4K_Demo.TranscodedSDR.tonemapped.1080p.mp4가 output file입니다.

 

대강 설명하자면,

 


 

-analyzeduration 100M -probesize 50M

    // 전역 헤더가 없는 ts 파일에서 스트림 정보를 파악하기 위해 미리 앞부분을 읽도록 하는 옵션

 

 

-vf zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=1920:-1:f=spline36:t=bt709:m=bt709,format=yuv420p

    // 색공간 변환과 감마 변환(transfer characteristics), 해상도 변환을 수행하는 옵션 설정

 

 

-c:v libx264 -profile:v high -crf 18.0 -preset veryslow -x264opts deblock=1,1:cabac:keyint=150:min-keyint=15:bframes=3:b-adapt=2:weightb:weightp=2:ref=4:scenecut=50:ipratio=1.4:pbratio=1.3:qcomp=0.50:rc-lookahead=30:mbtree:aq-mode=2:aq-strength=0.8:chroma-me:merange=24:me=umh:subme=10:direct=auto:trellis=2:psy-rd=0.30,0:psy:no-dct-decimate:no-fast-pskip:mixed-refs:partitions=all

    // 비디오 코덱(x264) 관련 설정

 

 

-pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709

    // 픽셀 형식 및 색공간 관련 정보 -> 전역 metadata로 기록됨

 

 

-c:a aac -b:a 128k -ac 2

    // 실행되는 FFmpeg 바이너리 파일이 libfdk-aac를 포함시키지 않고 컴파일되어

    // libfdk_aac 인코더가 없기 때문에 aac 인코더로 대체

 


 

나머지 부분은 metadata 관련이므로 설명을 생략하겠습니다.

 

 

 

이 명령어를 실행한 결과로 나온 동영상의 MediaInfo는 아래와 같습니다.

 

<MediaInfo>

 

LG_New_York_HDR_UHD_4K_Demo.TranscodedSDR.tonemapped.1080p_mediainfo.png

 

Metadata에서 보듯이 인코딩 결과 BT.709를 색공간으로 하고 YUV420p의 bit depth 8비트를 가진 SDR 동영상으로 변환되었음을 알 수 있습니다.

 

 

 

변환된 동영상이 원본인 HDR 영상과 색감에서 얼마나 차이를 보이는지 보기 위해 스크린샷 비교를 하면 다음과 같습니다.

 

<HDR 동영상의 스크린샷>

 

LG_New_York_HDR_UHD_4K_Demo.OriginalHDR.jpg

 

 

<SDR 동영상의 스크린샷>

 

LG_New_York_HDR_UHD_4K_Demo.TranscodedSDR.tonemapped.1080p.png

 

 

비록 푸른색과 초록색, 특히 푸른색 계열 색들이 좀 flatten됐지만 사실상 둘 간의 색감 차이가 거의 없는 것을 확인할 수 있습니다.

 

이는 샤나에서 scale 필터만을 이용해 SDR 인코딩한 다음 영상의 스크린샷과 비교해 보면 더욱 확연하게 드러납니다.

 

 

<샤나로 인코딩한 SDR 동영상의 스크린샷>

 

LG_New_York_HDR_UHD_4K_Demo.TranscodedSDR.jpg

 

 

따라서 HDR -> SDR 변환에 tonemap, zscale 필터가 절대적인 역할을 함을 알 수 있습니다.

 

 

원본과 FFmpeg로 인코딩한 동영상 파일은 아래 링크에서 다운받으실 수 있습니다.

 

<원본 HDR 동영상>

https://drive.google.com/open?id=14W5lqskWkn6aFUmSLrZRljPd4VuVbQlS (448MB)

 

<인코딩한 SDR 동영상>

https://drive.google.com/open?id=1t0K7Yq4KOdouopWDwxyELvFpIvVPuwud (124MB)

 

 

샤나인코더가 FFmpeg을 빨리 업그레이드하길 바라며 이상 마칩니다.

 

샤나인코더 5.0부터 shanatonemap 이라는 커스텀 필터를 추가하여 톤매핑을 적용한 HDR ⇒ SDR 인코딩이 가능해졌습니다.

자세한 사항은 HDR -> SDR 변환 (H264(x264), FHD, 톤매핑) (4.9.0.6 이상만 해당) 프리셋 게시물을 참고하시기 바랍니다.

TAG •
Facebook Twitter Pinterest Kakao
  • ?
    해피해피 2018.06.26 18:15
    sSTSs 님 저때문에 고생하셨네요
    장마진다니 더위좀 가시면 좋을텐데
    야구는 취소되고 ㅠㅠ
  • ?
    JKyle 2018.06.27 06:05
    안 그래도 관심 가는 이슈라 덕분에 저도 재미있는 공부를 했습니다. 건강하세요.
  • ?
    JKyle 2018.07.15 23:47

    미리 컴파일된 FFmpeg 바이너리는 아래 사이트에서 구하실 수 있습니다. (본문의 예제에서 사용한 바이너리임.)

     

    https://ffmpeg.zeranoe.com/builds/

     

    (단, 이 바이너리는 fdk-aac가 포함돼 있지 않습니다.)

     

    본인이 직접 build하고 싶으시다면 DOS 스크립트로 만들어 놓은 Media Autobuild Suite을 이용하시는 게 가장 속편한 방법입니다.

     

    https://github.com/jb-alvarado/media-autobuild_suite

     

    단, 상당히 오랜 시간이 걸리며 중간에 여러 요인 때문에 build에 실패하는 경우가 많습니다.

  • ?
    하나비 2018.12.01 23:03
    요즘 4k hdr 영상들을 자주 보는 데 hdr 미지원 tv라 너무 어둡게 나오거나 영상 필터를 사용해도 색 왜곡이 나타나 불만이었는데, 꿀팁 정말 감사합니다
  • ?
    weatherhelper 2019.07.28 03:04
    좋은 글 너무 감사합니다.

    1080p가 아닌 4k로 하려면
    zscale=1920를 zscale=3840 으로 하면 될까요?

    날이 무척 더운데, 시원한 여름 보내시길 바랍니다.
  • ?
    JKyle 2019.07.28 12:08
    네. 1920을 3840으로 치환하시면 됩니다.
  • ?

     

    22년에 마지막 올리신 프리셋과 HEVC 코덱(8-10비트)를 사용하면서도 보면은 인물 부분은 괜찮음, 어둠(조명) 부분이 깨져서요

     

    JKYLE 님글 계속 보다보니 샤나보다 명령어가 더 괜찮겠다 싶은데 영상(영화)이 10비트니 10비트로도 방법을 알아보려 하는데

     

    캡처_2023_11_12_14_28_15_406.png

    캡처_2023_11_12_15_07_36_103.png

    -이 부분은 기존 샤나 명령어를 찾아보니 high→high 10 으로 하면될듯, 근데 yuv420 8B 를 10b 로 할려면 가장 낮은 yuv420p10le high 10

    해야하는데 저게 맞으면 yuv420p10le=high 10 따라서 420이 낮은 일반 10비트인게 맞겠네요? (맞는것 같지만,궁금)

     

    암튼 어느부분을 바꾸면 될까요? 또 aac 얘기나오니 오디오 안걸들고(스트림복사) 할수도 있으려나요? (해결o)

     


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 소리를 4가지로 분리하는 샤나보컬리무버 프로그램을 소개합니다. Rina 2024.03.22 16503 5
공지 샤나인코더 통합 검색 기능 개선(샤나인코더 우측 상단에 있는 검색창을 사용해 보세요.) Rina 2021.09.30 31141 2
공지 자유게시판에서는 자유롭게 글을 작성할 수 있지만 다음과 같은 내용은 삭제돼요 Rina 2020.03.18 28151 5
공지 일반 [필독] 질문 전에 반드시 읽으세요!!! 3 file JKyle 2019.09.16 49230 8
공지 일반 [알림] 질문 먹튀하지 마시기 바랍니다 => 본문 변경 금지 24 JKyle 2018.10.12 46566 18
3268 질문 mp4로 자막합치기를하여 프리미어프로2024에서 불러왔는데 자막이 안뜨는이유가 어떤이유 때문일까요? 3 file 토네이도 2024.09.26 730 1
3267 질문 합치기 모드를 자주 쓰는데요... blinx 2024.09.25 833 0
3266 질문 동영상 작업시에 Lut을 입힐 수 있는 방법이 있을까요? 1 아우터 2024.09.25 560 0
3265 질문 오디오지연설정후, 저장하는 기능이 있나요? netin55 2024.09.24 409 0
3264 질문 PSP 프리셋 수정관련 문의드립니다. file kmvoice 2024.09.20 508 0
3263 일반 유튜브에 올릴 영상 오디오 코덱을 원본대로 PCM로 해봤는데 영상만 나오고 소리는 출력되지 않습니다 3 file 라이대위 2024.09.18 625 0
3262 질문 화질 관련해서 신기해서 질문... 1 위키페디아 2024.09.12 1138 0
3261 질문 드래그 앤 드롭으로 목록에 파일 추가가 안 됩니다. 도움 구합니다 ㅠㅠ 1 마나 2024.09.09 648 0
3260 질문 샤나인코더 인코딩 속도를 올릴려면 어떡해야 하죠???고수님들 답변 바랴요 ㅠㅠ 3 영상인코딩초보 2024.09.02 2254 0
3259 질문 인텔내장+GTX 750TI 시스템에서 NVENC인코딩시 GTX750TI를 GTX1060 또는 1660으로 변경시 화질 용량 인코딩시간 변화 문의 3 연민아빠 2024.09.01 1873 0
3258 질문 HEVC 인코딩에서 medium 과 slow 프리셋 psnr 값... 3 file 하늘아재 2024.08.29 2243 0
3257 질문 인코딩 시에 자막 위치 질문입니다. 노바디 2024.08.28 596 0
3256 질문 샤나인코더 사용팁 게시판의 기초 용어 정리 글에서 질문 1 길이만자르고화질음질원본 2024.08.27 648 0
3255 질문 파일을 불러오다가 갑자기 사라지는데 왜 이러는건가요? 4 file 몸근영 2024.08.26 892 0
3254 질문 구간 설정시 게이지바가 안보여요 file ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ 2024.08.20 663 0
3253 질문 오디오 스트림복사 질문 1 길이만자르고화질음질원본 2024.08.20 592 0
3252 질문 미리보기 영상에 소리가 안나와요. 그런데 인코딩 후엔 소리가 잘 나오는데... SONGANI 2024.08.19 631 0
3251 질문 삼성 UN55MU6500 USB(SSD)연결시 동영상 끊김 질문있습니다. 3 file C.L 2024.08.14 964 0
3250 질문 hevc가 애플기기로 재생이 안됩니다. 5 조은악마 2024.08.11 1382 0
3249 질문 레터박스관련 질문드립니다. file 개포동최씨 2024.08.10 569 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 165 Next
/ 165