안녕하세요. 저는 인코딩 디코딩에 대한 지식이 전무한 사람입니다.
어쩌다가 PLEX라는 것을 알게 되었고, PLEX의 라이브러리를 구성하고...
트랜스코딩과 다이렉트 플레이라는 것을 알게 되었습니다.
재생해본 결과 다이렉트 플레이가 훨씬 원활하고, 원본 화질 그대로 즐길 수 있다는 이점이 있어서 다이렉트 플레이를 고집하고 있습니다.
그런데 자막의 폰트를 변경하고 싶었습니다. 알아본 결과 ass 형식의 자막을 쓰면 된다는 것을 알았습니다.
여기서 문제가 생겼는데, PLEX 클라이언트가 자막이 srt이면 다이렉트 플레이가 가능하지만,
ass나 smi면 강제 트랜스코딩이 진행되어버려서 버퍼링이 엄청나게 걸리는 문제가 있었습니다.
그럼 srt 자막을 쓰고, 클라이언트에서 자막 폰트를 바꾸면 될 문제이지 않느냐고 생각하실 수 있는데, 클라이언트는 LG 스마트 TV이고, srt 형식의 자막의 경우 LG 스마트 TV가 정한 폰트(고딕체)로만 나와서 변경할 수 없었습니다. 바꾸고 싶다면 LG스마트TV를 루팅해야겠지만 저는 그런 능력이 없습니다. ㅠㅠ
그래서 이 영상에 자막을 입혀서(Hardburn) 다이렉트 플레이를 시켜야겠다고 결론을 내렸습니다.
검색을 하다가 하다가 여기까지 오게되었고, 이틀에 걸쳐서 많은 분들의 질문과 팁, 프리셋 등을 읽어보았습니다.
그리고 어느정도 해답을 찾았는데... 제가 생각한 바가 맞는지 확인하고 싶어서 이렇게 질문을 올립니다.
다시 말씀드리지만, 저는 영상 인코딩 디코딩에 대한 지식이 전무합니다. 그래도 이틀동안 몇번을 반복해 읽으면서 아주 조금 이해했습니다.
독서백편의자현(讀書百遍義自見) - 책을 백번 읽으면 그 뜻은 저절로 알게 된다.
어릴 때부터 이 마음을 가지고 살아왔던지라... 이해가 안되어도 몇 번을 반복해 읽으면 어느 순간 정말 이해가 되기 시작하더군요.
물론 또 설명을 매우 잘해주신 많은 분들 덕분입니다.
(여담이지만 PLEX 라이브러리 구성하고 ass 자막에 대해서 알게되고 트랜스코딩과 다이렉트 플레이에 대해서 알게되는데에 두달 걸렸네요 ㅠㅠ)
그리고 제가 이해한 부분에 대해서 점검을 받을려고 합니다.
본론을 말씀드리겠습니다.
제가 변환시키고 싶은 영상의 정보는 이렇습니다.
먼저 샤나인코더 밑에 나오는 요약된 비디오, 오디오 정보를 보여드리고, 오른쪽 마우스 클릭해서 파일정보를 눌렀을 때의 정보를 올리겠습니다.
요약
비디오 hevc, 3840x1596, 23.98fps, HDR, yuv420p10le(tv, bt2020nc/bt2020/smpte2084)
오디오 dts, 48000Hz, 8ch
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
General
Unique ID : 330454167508358052994626647783965339941 (0xF89B285B6F686DE699C9BDEF53523125)
Complete name : D:\PLEX\미국영화\해리포터 시리즈\해리 포터와 마법사의 돌 2160p.mkv
Format : Matroska
Format version : Version 4
File size : 21.5 GiB
Duration : 2 h 32 min
Overall bit rate mode : Variable
Overall bit rate : 20.2 Mb/s
Encoded date : UTC 2018-01-19 17:47:15
Writing application : mkvmerge v20.0.0 ('I Am The Sun') 64-bit
Writing library : libebml v1.3.5 + libmatroska v1.4.8
Video
ID : 1
Format : HEVC
Format/Info : High Efficiency Video Coding
Format profile : Main 10@L5.1@High
HDR format : SMPTE ST 2086, HDR10 compatible
Codec ID : V_MPEGH/ISO/HEVC
Duration : 2 h 32 min
Width : 3 840 pixels
Height : 1 596 pixels
Display aspect ratio : 2.40:1
Frame rate mode : Constant
Frame rate : 23.976 (24000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0 (Type 2)
Bit depth : 10 bits
Writing library : x265 2.6+22-ff02513b92c0:[Windows][GCC 6.3.0][64 bit] 10bit
Encoding settings : cpuid=1173503 / frame-threads=4 / numa-pools=16 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=3840x1596 / interlace=0 / total-frames=219173 / level-idc=51 / high-tier=1 / uhd-bd=0 / ref=4 / no-allow-non-conformance / repeat-headers / annexb / aud / hrd / info / hash=0 / no-temporal-layers / no-open-gop / min-keyint=1 / keyint=24 / gop-lookahead=0 / bframes=4 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=25 / lookahead-slices=4 / scenecut=40 / radl=0 / no-intra-refresh / ctu=64 / min-cu-size=8 / rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=2 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / no-strong-intra-smoothing / max-merge=3 / limit-refs=3 / limit-modes / me=3 / subme=3 / merange=57 / temporal-mvp / weightp / no-weightb / no-analyze-src-pics / deblock=-3:-3 / no-sao / no-sao-non-deblock / rd=4 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=1.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=17.0 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / vbv-maxrate=160000 / vbv-bufsize=160000 / vbv-init=0.9 / crf-max=0.0 / crf-min=0.0 / ipratio=1.40 / pbratio=1.30 / aq-mode=1 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=0 / videoformat=5 / range=0 / colorprim=9 / transfer=16 / colormatrix=9 / chromaloc=1 / chromaloc-top=2 / chromaloc-bottom=2 / display-window=0 / master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50) / max-cll=552,190 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / hdr / hdr-opt / no-dhdr10-opt / analysis-save=(null) / analysis-load=(null) / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1
Default : Yes
Forced : No
Color range : Limited
Color primaries : BT.2020
Transfer characteristics : PQ
Matrix coefficients : BT.2020 non-constant
Mastering display color primaries : Display P3
Mastering display luminance : min: 0.0050 cd/m2, max: 4000 cd/m2
Maximum Content Light Level : 552 cd/m2
Maximum Frame-Average Light Level : 190 cd/m2
Audio
ID : 2
Format : DTS XLL X
Format/Info : Digital Theater Systems
Commercial name : DTS-HD Master Audio
Codec ID : A_DTS
Duration : 2 h 32 min
Bit rate mode : Variable
Channel(s) : 8 channels
Channel(s)_Original : Object Based
ChannelLayout_Original : Object Based
Sampling rate : 48.0 kHz
Frame rate : 93.750 FPS (512 SPF)
Bit depth : 24 bits
Language : English
Default : Yes
Forced : No
Text
ID : 3
Format : PGS
Muxing mode : zlib
Codec ID : S_HDMV/PGS
Codec ID/Info : Picture based subtitle format used on BDs/HD-DVDs
Language : English
Default : No
Forced : No
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
이렇습니다.
저는 용량 줄일 생각도 없고, 화질 조정을 할 생각도 없습니다. 자막만 입히고 싶습니다.
빠른 설정을 들어가보니 스트림 복사가 있더군요.
오디오는 스트림 복사를 하면 될 것 같았습니다만, 비디오는 스트림 복사를 하면 자막을 입힐 수 없었습니다.(Hardburn)
자막을 영상에 새기는 것이니 재인코딩이 당연히 필요하겠지요.
저는 그럼 비디오를 똑같은 코덱과 똑같은 방식으로 설정해놓고, 자막 입히기를 체크하고 인코딩하면 되지 않을까 생각했습니다.
그래서 제가 가지고 있는 파일에 대해 공부를 좀 해보았습니다.
HDR 영상과 10비트 영상
https://shana.pe.kr/shanaencoder_tip/80753
이 글을 읽고 10비트와 HDR에 대해서 공부를 하였습니다만 아직 20%밖에 이해못했습니다.
그러다가 몇 번의 검색을 하다가 제가 원하는 프리셋을 발견했습니다.
HDR -> HDR(HDR10) 인코딩 (HEVC(x265), 1080p)
https://shana.pe.kr/shanaencoder_presets/49641
이 글이었습니다. 그러나 문제가 있는 것이 이 프리셋은 1080p HDR로 변환시키는 세팅이었습니다.
jKyle님께서 쓰신 글을 천천히 읽어보았고 이 부분을 발견했습니다.
--------------------------------------------------------------------------------------------------
필터 매개변수에 대한 설명은 아래와 같습니다. (오디오 부분은 생략)
=============================================================================
scale=1920:-1:flags=spline:out_color_matrix=bt2020_ncl
// 1080p로 해상도 변경, 알고리듬을 spline으로
// 해상도 변경시 color matrix를 HDR 용인 bt2020_ncl로
// 해상도 변경을 하지 않을 경우 지워도 무방
setsar=1/1
// 레터박스 사용 안 함
shanasubtitle=0
=============================================================================
---------------------------------------------------------------------------------------------------
여기에 따르면 해상도 변경을 하지 않을 경우 지워도 된다고 되어있는데,
필터 매개변수에서
scale=1920:-1:flags=spline:out_color_matrix=bt2020_ncl
이 한 줄을 지우면 된다는 뜻인건지요?
프리셋을 살펴봤을 때, 이 한 줄만 지우고, 자막입히기 체크를 하고 진행을 하면
제가 원하는 4k HDR(비디오 hevc, 3840x1596, 23.98fps, HDR, yuv420p10le(tv, bt2020nc/bt2020/smpte2084)의 화질을 보존하면서 자막을 입혀서 인코딩하는 것이 가능할까요?
혹시나 싶어서 다시 한번 더 언급드리는데, 저는 oepn Subtitle을 해야합니다. closed subtitle로 먹싱해버리면, 결국 클라이언트에서 제공하는 폰트로 재생될 것이기 때문입니다.
답변주시면 정말 감사하겠습니다.