Skip to menu

본문시작



2019.06.23 12:23

H264(NVENC) 화질향상 0.1

Views 7149 Votes 2 Comment 12
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Attachment
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Attachment

STTS님의 댓글에 달린 글들을 보고 H264(NVENC)에서 화질을 향상 시킬수 있는 방법을 찾아보다가 만들게 되었습니다

 

혹시라도 더 좋은 화질향상을 할수 있는 방법이 있으시면 가르쳐 주시기 바랍니다

 

부탁드립니다

 

 

Atachment
Attachment '1'
Facebook Twitter Pinterest Kakao
  • ?
    JKyle 2019.06.24 03:37

    수고하셨습니다. 제대로 만드신 거 같네요.
    쓸 때는 현재 1800k 로 돼있는 비디오 비트레이트와 64k 로 돼있는 오디오 비트레이트만 조정하면 될 것 같습니다.

    여담으로, FFmpeg에 내장된 h264_nvenc, hevc_nvenc 인코더로는 뽑아낼 수 있는 화질의 한계가 분명한 것 같습니다. 아마 이 프리셋이나 아래 제가 올려놓은 정도가 한계인 듯합니다.

    좀 더 나은 '무료' NVENC 인코더를 원하신다면 엔비디아의 CUDA SDK를 이용해 일본인이 개발하고 있는 아래 툴을 이용해 스크립트 인코딩 프로그램(StaxRip, Hybrid, MeGUI 등)으로 진행하는 방법밖에 없는 것 같습니다.

    NVenc: https://github.com/rigaya/NVEnc/releases

    꾸준히 활발하게 업데이트되고 있고, FFmpeg에는 없는 'VPP 하드웨어 필터'들이 내장돼 있습니다. (리사이즈, 디인터레이스(nnedi), crop, deband, edgelevel, unsharp, denoise 등. 최근에는 제한적 기능의 '자막 입히기'까지 추가) 이 말의 의미는, 하드웨어 디코딩 -> 하드웨어 필터 -> 하드웨어 인코딩의 workflow 적용으로 진정한 의미의 '하드웨어 가속'을 경험할 수 있다는 거죠.

    결과도 나쁘지 않습니다. 경험상 HEVC은 x265보다 약 30~40배 빠른 속도에 30% 정도 높은 비트레이트로 x265와 비슷한 화질을 뽑아내더군요. (GTX 1060 6GB) 물론 순전히 주관적인 판단입니다. :)

  • ?
    Kong_z 2019.07.24 13:10
    실례가 안된다면 실사 영화나 애니메이션의 추천 비트레이트 양을 알수 있을까요?
  • ?
    JKyle 2019.07.25 14:22

    상당히 모호하고 어려운 질문을 하시네요. 어떤 인코더를 쓰느냐, 어떤 프리셋을 쓰느냐, 원본이 움직임이 많으냐, 해상도가 어떻냐에 따라 달라져야 해서 딱히 값이나 범위를 지정하기 곤란합니다. 게다가 결과를 놓고 좋냐 나쁘냐 판단하는 것도 순전히 주관적인 것이라서...

     

    여기서 답변해도 좋을지 모르겠습니다만, 다만 한 가지 말씀드릴 수 있는 것은, 소프트웨어 인코더보다 하드웨어 인코더가 대략 30~50% 정도 높은 비트레이트를 주어야 화질이 대충 비슷해진다는 것, 프리셋은 slower에서 medium 정도가 속도 대비 화질이 가장 나은 것 같다는 것 (물론 하드웨어 인코더의 경우엔 vbrhq), 뭐 이 정도 되겠네요.

     

    그리고 원본이 좋다면 비트레이트 모드보다는 퀄리티 모드로 인코딩하는 게 더 만족스러운 결과를 주더군요. 물론 2패스로 하면 얘기가 달라지겠지만 그건 너무 시간이 걸려서...

     

    정석으로 하는 방법은, 영상에서 화질 열화가 염려스러운 부분을 구간 설정해서 퀄리티 모드든 비트레이트 모드든 실험 삼아 적용해 보고 crf 값이나 비트레이트 값을 조금씩 조정해 보는 겁니다. 그렇게 여러 번 하다 보면 대충 어떤 원본에 어떤 값을 주면 좋을지 자신만의 값들이 얻어지게 되죠. 감을 잡기 위해서는 초기에는 그런 방식으로 하실 것을 권하고 싶습니다.

     

    참고로, 1.85:1이나 2.35:1 비율의 1080p 영화일 경우 용량 줄여서 소장하기 위해 저는 x265로 비트레이트 1.5~2Mbps까지 퀄리티 모드로 적절한 crf 값을 찾아서 적용하곤 하는데, 이 방법은 솔직히 시간을 너무 많이 잡아 먹어서 별로 추천하고 싶진 않습니다. 쩝...

  • ?
    Kong_z 2019.07.27 00:26
    각 영상마다 줘야하는 설정치가 다르고 일반적인 퀄리티를 위해선 NVENC보다는 일반 방식이 사용하는것이 좋을것 같군요
    답변 감사합니다
  • ?
    HS 2019.09.25 01:42
    제한적인 '자막 입히기' 때문에 결국 ffmpeg로 작업을 해야만 할 거 같습니다.. 흑흑..
    NVEnc 에서 자막 덧씌우는 것은 결국

    https://github.com/rigaya/NVEnc/blob/master/NVEncC_Options.en.md

    요기 나온 파라미터들밖에는 없나요? 찾아봐도 잘 안 보이네요 ㅠㅠ

    폰트랑 shadow등등 조절하고 싶은 게 많은데.. 아쉽습니다.

    현재로선 방법이 없나요?
  • ?
    JKyle 2019.09.25 04:55

    네, 아직은 Aegisub의 도움이 필요합니다.

     

    폰트와 shadow 조절은 NVEnc에서 옵션으로 직접 조절하는 건 힘들고 smi라면,

     

    1) srt로 변경해서

    2) Aegisub에서 연 후에 ass 형식으로 변환하면서 편집

     

    하셔야 합니다.

    그래서 '제한적인' 자막 입히기라고 한 것입니다.

     

    <smi to srt>

    ffmpeg -f sami -i INPUT.smi -c srt OUTPUT.srt

     

    Aegisub은 자막 편집이 처음이시라면 약간 시간을 들여서 공부하셔야 할 겁니다.

     

    좀 번거롭죠.

  • ?
    HS 2019.09.25 22:27
    끙 어렵군요.
    smi2srt는 사용하던 스크립트가 깔끔하게 작동하고 있어서 그렇다고는 해도 ass로 바꾸는 게 좀 어렵네요.
    찾아보니 python 2.x 버전에는 srt2ass 가 있는데 이건 또 작동할란지...
    공부해야겠습니다..
    언제나 친절한 답변 감사드립니다.^^
  • ?
    문화보호물 2019.10.18 18:17
    지금 샤나인코더 최신버젼에서 인코딩 오류가 나게 되는 문제가 있습니다 원인은 저도 모르겠습니다 아마도 샤나인코더가 업데이트가 되면서 지금 버젼이랑은 옵션이 안맞아서 오류가 나는것 같습니다 시간 나는대로 다시 한번더 업그레이드를 하여서 다시 올리겠습니다
  • ?
    JKyle 2019.10.18 23:26

    샤나인코더의 FFmpeg 업데이트 문제는 아닌 것 같습니다. 프리셋도 문제가 없구요.

    자게에 댓글로 남겼는데, 본인 시스템의 nvcuda.dll 파일이 어떤 이유로 삭제가 돼서 발생한 문제 같으니 엔비디아 그래픽 드라이버를 다시 설치하시면 해결될 것 같습니다.

  • ?
    JKyle 2020.01.04 05:09

    이 프리셋의 인코딩 옵션 부분에

     -refs 4

    이 옵션을 없애야 오류가 나지 않습니다.

    FFmpeg에서 다중 참조 프레임 관련 옵션인 -refs를 NVENC에 보다 엄격하게 적용하면서 이 기능을 지원하지 못하는 엔비디아 그래픽 카드(파스칼 계열 이하 대부분 해당되는 것 같습니다.)에서는 아래와 같이 인코딩 오류를 발생시킵니다.

    Multiple reference frames are not supported by the device

    No capable devices found

    프리셋 사용자분들은 반드시 참고하시기 바랍니다.

  • ?
    P군 2020.01.04 15:30
    현재로서 가장 빠른 인코딩 속도일거 같은데요, 다만 -no-scenecut 뒤에 1은 불필요합니다.
  • ?
    JKyle 2020.01.05 13:40

    그 부분은 저도 좀 의심스럽긴 합니다. FFmpeg에서 해당 인코더 옵션 설명 부분에 보면,

    -no-scenecut <boolean> E..V...... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)

    이렇게 나와 있는데요, 이게 lookahead가 설정돼 있으면 반드시 그렇게 하라는 건지, adaptive I-frame 기능을 끄고 싶을 때만 그렇게 하라는 건지 설명이 명확하지 않아서 헷갈립니다. 다른 추가 매뉴얼도 전혀 없어서 설명이 영 부족합니다.

     

    인코딩 에러만 나지 않는다면 -no-scenecut 부분도 일부러 넣을 필요는 없을 것 같긴 합니다. 문제가 되지 않는데 굳이 제약을 가할 필요는 없을 테니깐... 131.gif


List of Articles
No. Subject Author Date Views Votes
44 화면 가운데 부분 가로 잘라내기 file JKyle 2020.03.10 534 3
43 애니메이션에 대한 일부 사전 설정 用于动画的一些预设 Some presets for animations 1 file Prophet 2019.12.14 1362 1
42 HDR -> SDR 변환 (H264(x264), FHD, 톤매핑) (4.9.0.6 이상만 해당) 3 file JKyle 2019.10.25 1612 1
41 AV1 제한된 비트레이트 모드 프리셋 file JKyle 2019.10.20 1043 0
40 HDR -> SDR 변환 (H264(x264), FHD, 톤매핑) 1 file JKyle 2019.10.17 1278 1
39 GIF 움짤 만들기 7 file JKyle 2019.09.08 1520 0
» H264(NVENC) 화질향상 0.1 12 file 문화보호물 2019.06.23 7149 2
37 레터박스 대신 흐린 원본 영상을 배경으로 까는 프리셋 file JKyle 2018.11.05 2049 2
36 영상에 텍스트 로고를 입히는 프리셋 file JKyle 2018.10.11 1954 1
35 HEVC(x265) 2패스 인코딩 프리셋 2 file JKyle 2018.09.15 6432 0
34 인코딩된 파일의 PSNR, SSIM 값 계산을 위한 프리셋 1 file JKyle 2018.09.05 1497 0
33 HEVC(x265) 디테일 개선을 위한 프리셋 11 file JKyle 2018.08.30 7837 1
32 오로지 확장자만 변경하기 위해서 만든 프리셋 file 문화보호물 2018.07.28 4936 0
31 부드러운 움직임의 60fps 인코딩 (minterpolate 필터를 이용) 11 file JKyle 2018.07.16 7168 0
30 HEVC(NVENC)를 이용한 일반 HDR 동영상 인코딩 2 file JKyle 2018.07.16 3921 0
29 HDR -> HDR(HDR10) 인코딩 (HEVC(x265), 1080p) 6 file JKyle 2018.06.25 4361 0
28 HDR -> SDR 변환 (H264(x264), 1080p) ⇦ 사용하지 말 것 7 file JKyle 2018.06.25 3484 0
27 HEVC(NVENC) 화질 향상 프리셋 16 file JKyle 2018.06.19 10772 1
26 HEVC 영상의 코덱 ID만 hev1에서 hvc1으로 변경하는 프리셋 2 file JKyle 2018.05.21 2165 0
25 VP9, Opus 코덱으로 인코딩하는 WebM 프리셋 (1080p, 720p, VOD 용) 5 file JKyle 2018.05.20 2605 0
Board Pagination Prev 1 2 3 Next
/ 3