조회 수 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)

     


  1. 소리를 4가지로 분리하는 샤나보컬리무버 프로그램을 소개합니다.

    Date2024.03.22 ByRina Reply0 Views16551 Votes5
    read more
  2. 샤나인코더 통합 검색 기능 개선(샤나인코더 우측 상단에 있는 검색창을 사용해 보세요.)

    Date2021.09.30 ByRina Reply0 Views31208 Votes2
    read more
  3. 자유게시판에서는 자유롭게 글을 작성할 수 있지만 다음과 같은 내용은 삭제돼요

    Date2020.03.18 ByRina Reply0 Views28205 Votes5
    read more
  4. [필독] 질문 전에 반드시 읽으세요!!!

    Date2019.09.16 Category일반 ByJKyle Reply3 Views49316 Votes8
    read more
  5. [알림] 질문 먹튀하지 마시기 바랍니다 => 본문 변경 금지

    Date2018.10.12 Category일반 ByJKyle Reply24 Views46635 Votes18
    read more
  6. 스트림복사 합치기

    Date2018.07.07 Bywhycallme Reply0 Views1374 Votes0
    Read More
  7. 프로그램 개선이 가능할까요?

    Date2018.07.07 By쌀밥 Reply1 Views595 Votes0
    Read More
  8. 유튜브로 동영상 업로드시 스마트 폰에서만 소리깨짐(꼭 부탁합니다.)

    Date2018.07.06 By은막 Reply5 Views3196 Votes0
    Read More
  9. 3.73기가를 1기가 보다 조금 안되게 줄이려면 어떻게 해야 할까요?

    Date2018.07.05 By럭키세븐 Reply1 Views1087 Votes0
    Read More
  10. 멀티쓰레드 설정시 궁금한점

    Date2018.07.05 By고딩샛별 Reply1 Views2523 Votes0
    Read More
  11. 유튜브에 영상을 올리면 스마트폰에서 소리가 잘 안나오네요

    Date2018.07.04 By은막 Reply1 Views905 Votes0
    Read More
  12. 다중 cpu와 멀티코어는 징원이 안돼는지요?, 그리고 해상도....궁금한점

    Date2018.07.03 By고딩샛별 Reply1 Views2200 Votes0
    Read More
  13. 고급설정 질문입니다

    Date2018.07.02 By해피해피 Reply2 Views857 Votes0
    Read More
  14. HEVC 코덱(H.265) 에서 AVC1(H.264) 로 2차 인코딩 하려고합니다.

    Date2018.07.01 By님덕내탓 Reply2 Views2515 Votes0
    Read More
  15. 아이폰 4K로 찍은 영상 인코딩 문의

    Date2018.07.01 By시버 Reply1 Views1236 Votes0
    Read More
  16. 자체 자막을 만들 시 자막이 열화됩니다.

    Date2018.06.30 By헝가리무곡 Reply2 Views646 Votes0
    Read More
  17. sk브로드밴드 셋톱박스로 영화를 보는데

    Date2018.06.29 By윤ㅊ패 Reply1 Views900 Votes0
    Read More
  18. 태그 질문입니다

    Date2018.06.29 By해피해피 Reply2 Views1035 Votes0
    Read More
  19. 구간설정 일괄 적용하는 방법이 있나요?

    Date2018.06.29 By아크라톤 Reply1 Views876 Votes0
    Read More
  20. 질문드립니다

    Date2018.06.29 By박물관방화범 Reply0 Views642 Votes0
    Read More
  21. 코딩 설정을 구했는데 이걸로 프리셋 만들수 있을까요?

    Date2018.06.29 By태극랍스타 Reply2 Views869 Votes0
    Read More
  22. 올레 스마트 플레이용 프리셋 요청합니다.

    Date2018.06.28 By킨타쿤테 Reply0 Views1136 Votes0
    Read More
  23. CFR 고정 프레임 레이트 뭐죠?

    Date2018.06.28 By쩌는사냐인코더 Reply1 Views4614 Votes0
    Read More
  24. 프리셋 속도 질문입니다

    Date2018.06.27 By해피해피 Reply2 Views1056 Votes0
    Read More
  25. tonemap, zscale 필터를 이용한 HDR->SDR 변환 (FFmpeg CLI)

    Date2018.06.26 Category정보 ByJKyle Reply7 Views4560 Votes0
    Read More
Board Pagination Prev 1 ... 93 94 95 96 97 98 99 100 101 102 ... 165 Next
/ 165