메뉴 건너뛰기

본문시작

방문자

전체 : 30,244,536
오늘 : 8,197
어제 : 28,859
조회 수 560 추천 수 0 댓글 10
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

샤나의 [빠른 설정] 메뉴에는 없지만 샤나에서도 HEVC(x265)로 2패스 인코딩을 하는 방법이 있습니다. 간단하게 말씀드리면, 매개변수 설정 창에서 x265의 고급 옵션에 'pass=1'(첫 번째 패스), 'pass=2'(두 번째 패스) 를 각각 추가하는 것입니다.

 

자세한 설명은 아래 적습니다.

 

<주의 사항>

반드시 샤나인코더가 관리자 권한이 필요 없는 path에 설치돼 있어야 합니다. 'C:\Program Files' 같은 곳은 접근시 관리자 권한이 필요하므로 샤나인코더 설치시 기본으로 설정돼 있는 'C:\ShanaEncoder' 같이 관리자 권한이 필요 없는 곳에 설치돼 있는지 확인해 주십시오.

 

이는 인코딩 첫 번째 패스 단계에서 두 번째 패스 인코딩에 필요한 정보 파일들을 샤나인코더가 설치돼 있는 곳에 쓰게 되므로 관리자 권한이 없다면 첫 번째 패스 인코딩이 실패하게 되기 때문입니다.

 

<배경 설명>

 

2패스 인코딩을 하는 이유는 비트레이트 모드에서 프레임 간 비트레이트 배분(rate control)을 보다 효율적으로 하기 위해서입니다.

 

[빠른 설정]에서 HEVC(x265) 비트레이트 모드를 선택하면 기본적으로 1패스 인코딩으로 주어진 비트레이트를 평균값으로 맞추는 인코딩을 합니다. (ABR 1-pass encoding) 이때 많은 경우 프레임과 프레임 간 정보 차이로 인한 비트레이트 차등 배분이 적절하게 이루어지기 힘들기 때문에 2패스 인코딩으로 이를 개선하는 것입니다. 첫 번째 패스에서는 영상에 대한 정보를 파악해서 적절한 qp(quantization parameter)를 계산하고, 두 번째 패스에서는 이 정보를 활용하여 '제대로' 인코딩하는 것입니다. 따라서 '이론상으로는' 비트레이트 모드 인코딩에서 1패스보다 화질이 개선됩니다. (물론 원본에 따라 실제로는 다를 수 있습니다.)

 

주의할 점은, 패스를 두 번 걸게 되므로 인코딩 시간이 최대 두 배까지 늘어난다는 것입니다. 타겟 용량을 확보할 필요가 있는 상황에서 화질을 개선하기 원하신다면 선택을 권장합니다.

 

2패스 인코딩은 퀄리티 모드에서는 불필요합니다. 퀄리티 모드 자체가 빠르게 2패스 인코딩을 하는 식이기 때문입니다.

 

참고로, rate control에 대한 자세한 설명은 아래 포스팅을 참조하시기 바랍니다.

 

https://slhck.info/video/2017/03/01/rate-control.html

 

<설정 방법>

 

샤나에서 'HEVC'이라고 통칭되는 HEVC(x265) 코덱에 비트레이트 모드로 설정돼 있는 어떤 프리셋이라도 상관 없습니다. 첫 번째와 두 번째 패스 모두 패스만 다를 뿐 같은 설정을 적용할 것을 권장합니다.

 

1. 첫 번째 패스

 

해당 프리셋을 불러온 후 F8을 눌러 매개변수 창을 띄웁니다.

 

[인코딩 설정] 섹션의 -x265-params 부분에 :pass=1을 추가하고 확인 (앞의 ':'는 구분자. -x265-params가 없다면 ' -x265-params pass=1' 추가)

 

Shana_HEVC(x265)_2pass_1st_pass_setting.png

 

 

[기본 모드]라면 바로 인코딩 실행. [개별 모드]라면 변경된 프리셋을 적용한 후 인코딩 실행.

 

첫 번째 패스 인코딩 실행의 결과로 (임시) output 동영상 파일과 두 번째 패스 인코딩을 위한 정보 파일(x265_2pass.log, x265_2pass.log.cutree(인코딩 설정에 따라 cutree 파일은 생성되지 않을 수 있음.))들이 샤나인코더가 설치된 경로에 생성됩니다. (물론 output 동영상 파일들은 샤나인코더 내에서 설정한 경로에 생성됩니다.)

 

Shana_HEVC(x265)_2pass_1st_pass_result1_file.png

(첫 번째 패스 인코딩 후 생성되는 동영상 파일)

 

Shana_HEVC(x265)_2pass_1st_pass_result2_stats_log.png

 

(첫 번째 패스 인코딩 후 샤나인코더가 설치된 경로에 생성되는 정보 파일들)

 

 

2. 두 번째(최종) 패스

 

역시 F8을 눌러 [인코딩 설정] 섹션에서 'pass=1'을 'pass=2'로 변경

 

Shana_HEVC(x265)_2pass_2nd_pass_setting.png

 

[기본 모드]라면 바로 인코딩 실행. [개별 모드]라면 변경된 프리셋을 적용한 후 인코딩 실행.

 

두 번째 패스 인코딩의 결과로 최종 output 동영상 파일이 생성됩니다.

 

Shana_HEVC(x265)_2pass_2nd_pass_result_file.png

(두 번째 패스 인코딩 후 최종 동영상 파일 생성)

 

<스크린샷 비교>

 

두 output 동영상 파일의 화질 비교를 위해 동일한 프레임을 캡쳐한 스크린샷들입니다.

 

screenshot_1st_pass.png

(첫 번째 패스 output 동영상)

 

screenshot_2nd_pass.png

(두 번째 패스 output 동영상)

 

미세하게나마 최종 결과물의 화질이 약간 더 낫습니다. 깍두기 현상 및 고르지 못한 계조가 개선된 것을 보실 수 있을 겁니다. 아마 비트레이트를 더 낮게 준다면 둘 사이 차이가 커질 것으로 짐작됩니다.

 

<덧붙이는 말씀>

최종 output 동영상의 메타데이터를 미디어인포로 확인해 보면 아시겠지만, 2패스 인코딩을 한다고 해도 메타데이터의 '인코딩 설정' 부분에는 rate control mode가 2pass가 아닌 abr로 기록됩니다. (H264(x264)는 이 부분이 2pass로 기록됩니다.) FFmpeg로 해도 같은 결과가 나오는 걸 보니 이는 샤나의 문제가 아닌 x265 자체의 문제인 것으로 보입니다.

 

Shana_HEVC(x265)_2pass_2nd_pass_result_file_mediainfo.png

 

직접 확인해 보시면 아시겠지만 패스를 두 번 걸어서 이루어지는 화질 향상은 경우에 따라 아주 미미합니다. 이 정도 화질 개선을 위해 시간을 두 배나 들여야 되나 하는 자괴감(?)이 들 수도 있습니다. 어쩌면 최종 용량을 알 수는 없어도 그냥 퀄리티 모드로 한 번에 인코딩을 끝내는 게 낫겠다 싶을 수도 있습니다. 늘 그렇지만, 어디까지나 본인 판단하에 알아서 적용하시기 바랍니다.

 

첫 번째 패스 인코딩을 할 때 시간 절약을 위해 오디오 스트림의 인코딩 부분은 생략하고 두 번째 패스 인코딩 시 오디오 인코딩을 병행하는 방법으로 시간을 조금 절약할 수 있습니다. 방법은 쉬우니 알아서 하시길...

 

그리고 인코딩이 끝난 후 샤나인코더 설치 경로에 생성된 정보 파일들(x265_2pass.log, x265_2pass.log.cutree)은 삭제하셔서 디스크 공간을 절약하십시오.

 

참고로, FFmpeg로 직접 2패스 인코딩을 하고 싶으시다면 https://trac.ffmpeg.org/wiki/Encode/H.265 이 문서를 참조하시기 바랍니다.

  • ?
    유토짱 2018.08.28 23:34
    다른 분들은 hw인코딩이 질이 떨어진다고 하는데 개인적으로는, HW인코딩이 속도로 모든것을 보상한다고 봅니다. 화질도 거의 차이 없이 나오는것 같습니다.

    만약, 저화질을 최대한 살리면서,작업하는 경우가 아니라 고화질영상(2k,4k)를 가지고 작업할때는 생성물이 거의 차이가 안나는것 같습니다.
  • ?
    sSTSs 2018.08.29 00:29

    고해상도에서는 확실히 하드웨어 인코딩이 진가를 발휘하죠.

     

    저도 속도 때문에 하드웨어 인코딩을 주로 사용하는데 중독성(?)이 꽤 강해서 손 떼기가 힘들어요. ㅎㅎ 화질도 설정 세팅 좀 하면 웬만하면 괜찮게 나오구요.

     

    근데 한 가지 난제가, 비트레이트를 HEVC(x265)보다 대략 1.5~2배 이상 높게 주지 않으면 HEVC(NVENC)는 blurring/color banding/blocking이 심해지더군요. 특히나 film grain 필터가 적용된 영상이나 노이즈를 보존해야 하는 영상의 경우 NVENC는 취약해 보입니다. 아무래도 노이즈와 디테일에 관한 tolerance가 x265보다 훨씬 취약해서 blurring/color banding/blocking 문제가 x265보다 훨씬 더 심하게 나타나는 것 같습니다. 안 그래도 디노이징 효과 때문에 해상도 낮은 영상에서는 x265도 까이고 있는데 말이죠. ㅋㅋㅋ (여기 참조) 아무튼 이 문제에 관한 한 NVENC로는 포기하더라도 어떻게 하면 x265만으로라도 x264를 대체할 수 있을까, 요즘 이 문제를 고민 중입니다.

  • ?
    유토짱 2018.08.29 01:01
    x265가 아직 안되는 기기들 때문에, h264를 쓰는데, x265가 흠잡을데 없이 선명하더군요.

    저같은 경우 여러테스트 결과 h264 hw인코딩할때, film,인터레이싱 같은 필터 안쓰고,
    bit rate를 원본 영상의 평균 비트레이트값으로 주고, -c:v h264_nvenc -preset ll 또는 llhq정도를 주니까
    원본과 파일사이즈가 비슷하게 나오더라구요.

    저는 파일크기를 줄이는 것보다 화질을 선택해서 그렇게 하고 있습니다.
  • ?
    sSTSs 2018.08.29 01:21

    ll(low latency) 프리셋들은 버퍼 크기가 제한 있는 기기나 최대 비트레이트를 제한하고 싶을 때 쓰는 프리셋인 걸로 아는데, 보관용으로 쓸 때는 high quality 2 pass인 'slow'를 쓰는 게 가장 좋지 않을까요? 그나저나 h264_nvenc로 인코딩한 영상들은 프리셋을 slow로 잡아도 전부 ref 값들이 1로 나오더군요. 이거 인코딩 효율이 너무 낮아지는 건 아닌지...

     

    저는 HEVC 애호자라 hevc_nvenc를 slow 프리셋으로 하고 rc 모드와 rc-lookahead 값, 그리고 aq 설정을 custom setting 해서 주로 씁니다. 그렇게 할 수 있는 한 최대 화질로 세팅해서 인코딩해도 인코더의 한계인지 비트레이트를 좀 줄였다 싶으면 여지 없이 문제가 조금씩 나타납니다. H264도 써볼까 하다가도 아무래도 효율 때문에 정이 안 가서리... ㅋㅋㅋ

  • ?
    유토짱 2018.08.29 01:48
    ffmpeg -i test.mp4 -vf "hwdownload,format=nv12, stereo3d=sbsl:abl, pad=2880:2880:(ow-iw)/2:(oh-ih)/2:0x101010"
    -c:v h264_nvenc -preset ll -profile:v high
    -b:v 15.4M -r 30 -rc-lookahead 16 -qmin 10 -qmax 23 -refs 4 -c:a copy out.mp4

    refs 문제는 위처럼도 해봤는데, 화질에 큰차이가 없고 -rc-lookahead 16 -qmin 10 -qmax 23 -refs 4 이런부분들이 속도저하가 일어나서
    빼버리고 사용하고 있습니다.

    저도 slow로 한번해서 비교해 봐야겠네요.

    저는 latency 가 느린 모바일 장비들 때문에, 아직 hevc를 안해보고 있는데, 앞으로는 hevc 시대가 오겠죠.
  • ?
    sSTSs 2018.08.29 02:51

    아, 제가 말씀드린 H264의 ref 값은 DPB(Decoded Picture Buffer), 즉 P-frame이 참고하는 이전 프레임 갯수를 말하는 겁니다. x264에서는 "FFmpeg -c:v libx264 -refs=4" 나 "-x264-params ref=4", 이런 식으로, 샤나에서는 H264의 고급 설정에서 'Reference Frames'에서 설정하는 값이죠. 이 값이 클수록 인코딩 효율은 높아져 같은 화질에 비트레이트는 줄일 수 있는, 즉 같은 비트레이트에 화질을 향상할 수 있는 반면 필요로 하는 버퍼 크기가 커져 로우 버퍼 기기에서는 재생이 불가능해질 수 있는 단점이 있죠. h264_nvenc에서는 설정 옵션이 없는 것 같은데요? 프리셋을 slow로 하면 latency 상관 없이 최대 화질을 뽑아낸다기에 그걸로도 해봤는데 ref 값은 여전히 1이더군요.

     

    시도해 보신 -refs는 FFmpeg 인코더 옵션으로는 기본적으로 motion compensation을 위한 참조 프레임수입니다. 이건 x265에서의 ref 옵션과는 비슷하면서도 약간 다른데, x265에서는 motion compensation을 위한 두 종류의 참조 프레임 중 L0 references의 최대값을 의미합니다. h264_nvenc가 그 값을 어떻게 이해하고 사용하는지는 모르겠지만 motion compensation 계산은 항상 시간이 더 소요되니 인코딩에 시간이 더 걸리는 건 당연하겠죠. x265에서야 이 값이 높아지면 화질 개선이 이루어지겠지만 h264_nvenc는 이게 어떻게 작용하는지는 미지수인 거 같습니다.

     

    rc-lookaheadH264에서는 rate control을 위해 미리 참조할 이전의 프레임수를 의미하는데 h264_nvenc의 경우 기본값이 0입니다. x264는 40이구요. 그렇다는 건 이 값을 수정하지 않는다면 nvenc는 rate control을 순전히 intra-frame 정보만으로 한다는, 즉 프레임 간 비트레이트 차등 배분을 거의 하지 않는다는 얘기가 되죠. 그렇게 되면 latency는 낮아져 로우 버퍼 기기에서의 재생에는 도움이 되지만 화질 향상에는 별 도움이 안 된다는 얘기가 됩니다. 그래서 인코딩 속도가 다소 느려지더라도 이 값을 x264 수준까지는 아니더라도 20 정도는 줘야 하지 않을까 생각합니다.

     

    -qmin, -qmax야 qp(quantization parameter) 값 범위 설정이니 그냥 무시해도 될 것 같구요.

  • ?
    유토짱 2018.08.29 08:01
    용어가 살짝 헷갈리는데, 암튼 저는 샤나미디어이포에 나오는
    Format settings, ReFrames : 1 frames 이부분을 4로 바꾸기위해, 위와 같은 방법을 썼었습니다.
    원본영상으 보통 4,9 frame인데, 제가 인코딩하면 1 frame으로 바뀌길래, 옵션을 찾아서 똑같이 만들다보니 -refs= 4를 주니까 원본과 같이 되더군요.
  • ?
    sSTSs 2018.08.29 08:20
    아, h264_nvenc도 x264와 마찬가지로 -refs를 DPB로 받는군요. 안 써봐서 몰랐습니다. 몰랐던 거 알아갑니다. 감사합니다.
  • ?
    핥아버지 2018.09.15 01:56
    제 프리셋 갖고는 계속 오류 뜨는데 프리셋 하나만 올려주세요
  • ?
    sSTSs 2018.09.15 14:51
    https://shana.pe.kr/index.php?mid=shanaencoder_preset&document_srl=55167
    간단한 프리셋으로 올렸습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수 추천 수
공지 샤나인코더 4.9 버전부터 추가된 편의기능 >>프리셋 메뉴 및 설정 메뉴를 빠르게 열기<< file 샤나 2018.06.28 2516 0
공지 AMD 플루이드모션 60프레임 인코딩 (real 프레임레이트) 설정방법 (ffmpeg 프레임 보간기법) 17 file 능소화 2017.06.07 9045 0
공지 태-영화체(유료폰트) 와 비슷한 a시네마 무료 폰트 올려드립니다. [링크참조] 2 file 능소화 2017.04.03 9193 0
공지 [TIP] 기존의 '귀여운 소녀' 아이콘으로 돌아가기 1 file 유밍 2017.03.30 3545 0
공지 ※ 설정방법 / 프리셋파일포함 ※ 샤나인코더외부 자막 Mux 기능 추가 [v 4.5.1] 9 file 능소화 2017.03.30 6863 1
42 "비트레이트를 원본보다 높게 주면 원본보다 퀄리티가 나아질 수 있다"는 주장에 대해 2 sSTSs 2018.09.20 328 0
41 SSIM, PSNR로 측정한 NVENC 인코딩 4 file sSTSs 2018.09.10 190 0
40 인코딩된 파일의 PSNR, SSIM 값 계산하기 file sSTSs 2018.09.06 182 0
39 8비트 원본을 10비트로 인코딩하면 8비트로 인코딩할 때보다 화질이 더 낫다? 4 sSTSs 2018.09.04 411 0
» 샤나에서 HEVC(x265)로 2패스 인코딩하기 10 file sSTSs 2018.08.28 560 0
37 해상도 변경 + 하드웨어 가속 인코딩 시 속도 향상 12 file sSTSs 2018.08.24 910 0
36 부드러운 움직임의 60 프레임 인코딩 11 sSTSs 2018.07.17 2386 0
35 tonemap, zscale 필터를 이용한 HDR->SDR 변환 (FFmpeg CLI) 3 file sSTSs 2018.06.26 538 0
34 하드웨어 가속 디코딩을 꺼서 인코딩 속도를 높이기 4 sSTSs 2018.06.19 3320 1
33 소장용 고화질 1080p 영상 인코딩 팁 퍼플군단 2018.06.13 3721 0
32 샤나인코더와 자막, Q&A 1 file sSTSs 2018.06.01 1128 0
31 QuickTime/Apple TV에서 재생이 안 되는 HEVC 동영상 문제 해결 1 file sSTSs 2018.05.21 655 0
30 HD(720p) 이상 고해상도 동영상을 HD의 WebM(VP9, Opus 코덱)으로 인코딩하기 file sSTSs 2018.05.20 1157 0
29 wINDOWS10 멀티 데스크톱 정군 2018.05.08 631 0
28 HDR 영상 인코딩하기! 7 황금별똥 2018.01.24 3185 0
27 ASS 자막 파일을 aegisub으로 작업 시 libass를 사용하세요. file 샤나 2018.01.20 1175 1
26 블루레이 (Blu-ray) 폰트 모음 트루폰트로 올립니다. (용량관계로 댓글 부분확인) 3회 연속 업로드함. 2 file 능소화 2017.10.28 3639 0
25 MP3 파일 비트레이트 320 이상 설정방법 / 자막크기 및 자막 위치 설정 방법 1 file 능소화 2017.10.28 2702 0
Board Pagination Prev 1 2 3 Next
/ 3