도저히 원인을 모르겠습니다.
자막을 지원하지 않는 TV로 영상을 보기위해, 영상에 자막을 입히는 작업을 하고 있습니다.
하지만, h.264 high, auto, medium로 인코딩을 한 영상을 TV에서 재생하니, 무한로딩이 걸리다가 튕겨 버립니다.
h.264 main, 4.1, ? 원본영상은 아주 잘 나옵니다.
(원본영상의 정보는 첨부파일의 '원본 영상 정보.txt'에 있습니다.)
이것과 최대한 비슷한 형식으로, 구글링으로 고급설정까지 맞춰가며, h.264 main, 4.1, medium으로 재인코딩을 했으나, 역시 무한로딩이 됩니다.
(재인코딩한 영상의 정보는 첨부파일의 '인코딩 영상 정보.txt'에 있습니다.)
원본 : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x1:0x131 / me=umh / subme=9 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=24 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=240 / keyint_min=1 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=17.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
재인코딩 : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x1:0x131 / me=umh / subme=9 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=1 / keyint=240 / keyint_min=1 / scenecut=40 / intra_refresh=0 / rc_lookahead=10 / rc=crf / mbtree=1 / crf=17.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
혹시 몰라 영상 스트림 복사를 사용해서 TV로 확인해보니, 잘 됩니다.
(스트림 복사한 영상의 정보는 첨부파일의 '단순 복사 영상 정보.txt'에 있습니다.)
다양한 방법으로 삽질을 한 후 알아낸 것은, 프리셋을 'baseline' 설정한 경우에는 잘 나온다는 것입니다.
그러나 이 방법을 FHD에는 적합한 방법이 아니라고 생각되고, 'main'이나 'high'로 설정하고 싶습니다.
또 원본 영상은 'main'인데도 잘만 실행되는데 말이죠....
다른 영상 중에 'high'도 잘만 실행되는데, 유독 샤나인코터로 뽑은 영상만 무한로딩 걸리다 튕깁니다....
(1) 원인이 무엇이고, 해결방법은 없을까요?
아직 인코딩에 대해 잘 모릅니다. 1일차 밖에 안된 초보입니다.
(2) 그냥 간단히 원본 영상의 세팅(?)값과 똑같이 인코딩하는 방법은 없을까요?
(3) 같은 코덱에 같은 알고리즘(?)이 들어가면, 동일한 방식으로 저장되는거 아닌가요?
왜 유독 샤나인코더로 뽑은 것만 이상한 걸까요?
+ PC에서는 뭘로 인코딩하든 잘 나옵니다. (영상 자체에는 문제가 없습니다.)
(1)
PC가 아닌 TV나 차량용 동영상 재생기 같은 다른 하드웨어에서 볼 목적으로 인코딩할 때는 해당 하드웨어가 지원하는 동영상 스펙을 반드시 먼저 파악해야 합니다.
https://shana.pe.kr/shanaencoder_board/68065
⇐ 이 질문글처럼 TV에서 지원 가능한 동영상 종류(컨테이너 양식), 비디오 쪽 코덱/프로파일/레벨/프레임 레이트/최대 비트레이트 등과 오디오 쪽 코덱/프로파일/채널 수/샘플링 레이트 등
그리고 TV가 갖고 있는 버퍼 크기에 따라 비트레이트 제한을 걸어야 할 경우도 생깁니다. (-maxrate, -bufsize 옵션 추가)
첨부하신 영상 정보를 보니 형식이 전부 mkv, 오디오가 전부 flac이던데, 해당 TV에서 flac 오디오의 mkv 파일을 재생할 수 있는지부터 먼저 확인해 보시죠.
(2)
특정 동영상 미디어인포의 인코딩 설정 정보만 보고 하나하나 그대로 따라하는 것은 1) 분석을 위해서 인코딩에 관한 상당히 많은 지식을 요구하며 2) 인코딩 설정이 원본에 따라 달라져야 하는 상황에서 별 의미도 없는 미련한 짓이라 절대 비추입니다.
https://shana.pe.kr/shanaencoder_board/55793
⇐ 이 질문글과 댓글을 참고하시기 바랍니다. (H264가 아닌 HEVC 관련이라 좀 복잡합니다.)
경험상 인코딩에 대해 잘 모르는 분들만 인코딩 설정 베끼는 방법에 관해 질문하시더군요. 솔직히 애초에 그게 가능할 정도로 인코딩에 대해 제대로 알고 있다면 그게 얼마나 의미없는 일인지도 잘 알고 있을 테니 말이죠.
잘 되는 영상 그대로 따라하기보다는 (1)에서 확인한 스펙 기준에 맞춰 제대로 설정해서 인코딩하실 것을 권하고 싶습니다.
대부분의 경우 이 방법이 훨씬 낫고 생각보다 어렵지 않습니다. (대부분 [빠른 설정]에서 비트레이트 모드로 몇 가지 사항만 주의하면서 설정하면 문제가 없습니다.)
(3)
코덱 특성(codec features)은 같아질지 몰라도 동영상의 특성(video properties) 자체는 달라집니다. 예를 들어 똑같은 퀄리티(crf) 값을 주더라도 나오는 비트레이트는 달라지는 것처럼.
그래서 동일한 퀄리티 모드 설정으로 인코딩했다 하더라도 비트레이트가 TV에서 재생하기 힘들 정도로 크게 나온다면 재생이 안 될 수도 있겠죠.
그런 이유로, TV와 같이 버퍼 크기가 제한된 하드웨어에서 재생하기 위한 용도로 인코딩할 때는 퀄리티 모드 말고 (화질 손실을 감수하더라도) 비트레이트 모드로 인코딩하는 게 정석입니다.