로얄가드의 하늘을 보며 망상

royal1.egloos.com

포토로그




H.265(HEVC)로 동영상을 인코딩 해서 용량을 줄여봅시다 컴퓨터 친구들


2015년 까지 동영상 인코딩의 대세는 H.264 입니다. 블루레이의 코덱도 AVC 라고 H.264/MPEG4 Part 10 Advanced Video Codin 입니다.

하지만 기술의 발전은 계속 이어져서 블루레이와 HDTV 이상의 해상도의 영상서비스가 예정 되어 있습니다. 
4K와 8K가 그런데 H.264 이상의 영상 압축기술을 요구 하게 됩니다. 4K와 8K는 무지막지한 대역폭을 요구하고 
현실은 대역폭을 무한정 늘일수 없죠.
그래서 압축율이 높여 현단계의 통신 규약이나 미디어에서 더 높은 영상을 보이는 기술 발전이 필요합니다.

2013년 H.265가 발표 되었습니다. 복잡도가 대단히 늘어나고 압축율이 최대 50%까지 올라갈수 있는 새로운 코덱이죠
추가 사항으로는 쉽게 설명해서 더 높은 해상도에서 효율성증가, 최대 16비트 영상까지 지원 다양한 포멧지원등을 가지고 있습니다.

문제는 복잡도가 늘어나서 인코딩/디코딩시 어마어마한 CPU 자원을 요구 합니다. 옵션을 잘못 설정할경우 한시간 가량 영상을 인코딩 하는데 1박 2일을 요구할수도 있습니다. 

하지만 인코딩 된 결과는 용량대비 상당히 만족스러웠습니다. 본인의 경우 게임 영상을 녹화해서 복기 해보는 경우가 많은데 쉐도우 플레이에서 떨어지는 파일은 너무 용량이 크죠 


1. 인코딩 프로그램 
 - 샤나 인코더를 씁니다. 다음팟 인코더가 좋은부분이 있긴 한데 고소고발에 발이 묶여서 업데이트가 원활하지 않죠
  http://shana.pe.kr/ 에서 받을 수 있습니다.


2. 인코딩 설정
 - 설정은 크게 어렵지 않습니다. 다음팟으로 인코딩 해봤다면 크게 어렵지 않습니다.
 - 파일을 샤나인코더에 드래그 & 드랍 한 다음 F6을 눌러주면 설정이 나옵니다.

 - 파일 형식을 MKV나 MP4정도로 맞춰주고 비디오 코덱을 HEVC로 맞추고 비트레이트를 설정 합니다.
  - 추가 설정을 [코덱 설정] 에서 설정 합니다.

- 인코딩 속도가 H.264 코덱 대비 3~5배 정도 느립니다. 하지만 비트레이트 대비 화질은 더 좋더군요 
  프리셋을 FAST쪽으로 올리면 빠르게 인코딩 되고 화질이 떨어지고 SLOW 쪽으로 내리면 인코딩 속도는 극악으로 느려지고 화질이 미세하게 좋아집니다.


3. 문제점
 - 안드로이드에서는 돌아가는 기기가 있고 안돌아가는 기기가 있는데 IOS에서는 못돌립니다. 아이폰 6플러스에서도 
   거의 못볼정도의 프레임 밖에 안나옵니다. 
   아이폰 스팩에 H.265 돌린다고 되어있지 않으니 어쩔수 없죠
 - 갤럭시 S6의 경우 1440P나 4K HEVC도 가볍게 돌립니다.
 - 본인이 구매한 중국산 미디어텍 칩을 쓴 신형 스마트폰 MT6752의 경우 1080P 까지의 HEVC를 HW적으로 디코딩 하더군요

 - HEVC동영상은 PC에서도 그냥 깡으로 돌리면 상당한 CPU를 점유 합니다. LAVFILTERS 등을 설정해서 돌려야 됩니다.
   nVIDIA 그레픽카드나 인텔 그레픽 카드의 GPU의 힘을 돌리는 설정을 해주시면 어마어마한 좌절 영상도 가볍게 돌립니다.


- 7월 22일 추가 사항 - nVIDIA 그레픽 사용자를 위한 빠른 인코딩

HEVC 빠른 인코딩 - nVIDIA신형 그레픽 사용자 - MediaCoder 사용

nVIDIA그레픽 카드는 CUDA 코어 외에 NVENC 라는 실시간 영상 인코딩 모듈이 들어가 있습니다. 
이 모듈의 대표적인 사용처가 쉐도우 플레이죠...

NVENC 라이브러리는 외부 프로그램이 사용 할 수도 있는데 이것을 사용할 경우 매우 빠르게 H.265 (HEVC) 인코딩이 됩니다.
단... 900 시리즈 그레픽 카드 한정 입니다. 그 이하 버전은 H.264만 실시간 인코딩이 됩니다.



- 미디어 코더는 매우 강력한 미디어 트렌스코딩 유틸리티 입니다. 
최신 코덱과 기술을 빠르게 접목하고 있는 새로운 유틸리티 입니다.


OS의 설정에 따라서 32BIT / 64BIT 중에서 받으면 됩니다.



실행 후 비디오 파일을 드래그&드롭으로 넣은 다음 진행을 해보겠습니다.

1. VIDEO 설정 
  Encoder를 GPU로 설정 후 NVENC로 바꿉니다. 
  Format을 H.265로 바꿔 줍니다.
  Video Bitrate를 원하는 수준까지 맞춰 주시면 되고 
  나머지 부분은 크게 건들 필요가 없습니다.

2. 사운드 설정 
 - LC-AAC 19Kbps를 일반적으로 씁니다.

3. Container 설정 
 - 무난한 MP4로 갑니다.


4. START 아이콘을 눌러주면 영상 제작이 시작 됩니다.

- GPU빨을 받은 인코딩 속도는 1.1배속이 나옵니다. CPU 만 사용시에넌 0.2배속 미만이 나오는것을 생각하면
  5~6배는 더 빠른 처리를 보입니다.

- 아쉽게도 NVENC는 인코딩 속도가 빠르긴 하지만 영상의 품질이 CPU만으로 인코딩 한것보다는 약간 떨어집니다. 

- 다시 말하지만 GTX970, GTX980, GTX960, TITAN-X 등의 900대 버전만이 NVENC로 H.265인코딩을 지원합니다.

덧글

  • 최강로봇 도라에몽 2015/05/07 01:36 # 답글

    기어이 나왔군요.... 정말 8K 시대가 되면서 제일 문제되는건 영상의 용량과 디스플레이죠.. 저도 좀 1600X900을 풀HD로 라도 바꾸고 싶군요
  • 가을 나그네 2015/07/03 19:52 # 삭제 답글

    감사하게 사용해 보겠습니다.
  • 가을 나그네 2015/07/03 19:52 # 삭제 답글

    감사하게 사용해 보겠습니다.
  • 망할라데온 2015/12/31 02:06 # 삭제 답글

    정확히 HEVC 디코더 지원하는 그래픽카드 기종은 엔비디아 지포스 GTX950, GTX960이며 AMD 라데온 Fury X(hdmi2.0 미지원) 인텔 하스웰급 이상 cpu내장 그래픽만 4k HEVC가속을 지원합니다. 언급하신 970 980 같은 상급 카드들도 물론 4k 영상 구동은 잘됩니다. 워낙 성능이 좋아 가속은 안되고 GPU빨로 과부하 걸려 구동된다는 말이 맞습니다(점유율 60% 이상 나옴) 950 960이 최신 기술 다 탑재된 카드입니다. 4k 60프레임 샘플 구동해도 점유율 10%도 안나오죠. AMD CPU는 가속되는게 모바일용 카리조 밖에 없고요. 아마 내년 1~2분기 쯤해서 엔비디아던 AMD던 HEVC 가속지원은 보편화 될 것 같습니다.
  • 망할라데온 2015/12/31 02:06 # 삭제 답글

    정확히 HEVC 디코더 지원하는 그래픽카드 기종은 엔비디아 지포스 GTX950, GTX960이며 AMD 라데온 Fury X(hdmi2.0 미지원) 인텔 하스웰급 이상 cpu내장 그래픽만 4k HEVC가속을 지원합니다. 언급하신 970 980 같은 상급 카드들도 물론 4k 영상 구동은 잘됩니다. 워낙 성능이 좋아 가속은 안되고 GPU빨로 과부하 걸려 구동된다는 말이 맞습니다(점유율 60% 이상 나옴) 950 960이 최신 기술 다 탑재된 카드입니다. 4k 60프레임 샘플 구동해도 점유율 10%도 안나오죠. AMD CPU는 가속되는게 모바일용 카리조 밖에 없고요. 아마 내년 1~2분기 쯤해서 엔비디아던 AMD던 HEVC 가속지원은 보편화 될 것 같습니다.
  • 망할라데온 2015/12/31 02:07 # 삭제 답글

    정확히 HEVC 디코더 가속 지원하는 그래픽카드 기종은 엔비디아 지포스 GTX950, GTX960이며 AMD 라데온 Fury X(hdmi2.0 미지원) 인텔 하스웰급 이상 cpu내장 그래픽만 4k HEVC가속을 지원합니다. 언급하신 970 980 같은 상급 카드들도 물론 4k 영상 구동은 잘됩니다. 워낙 성능이 좋아 가속은 안되고 GPU빨로 과부하 걸려 구동된다는 말이 맞습니다(점유율 60% 이상 나옴) 950 960이 최신 기술 다 탑재된 카드입니다. 4k 60프레임 샘플 구동해도 점유율 10%도 안나오죠. AMD CPU는 가속되는게 모바일용 카리조 밖에 없고요. 아마 내년 1~2분기 쯤해서 엔비디아던 AMD던 HEVC 가속지원은 보편화 될 것 같습니다.
  • Power-User 2016/11/28 01:32 # 삭제 답글

    망할라데온님

    글쓴이는 디코딩이 아니라 인코딩을 언급한 것이니까요.

    HEVC 인코딩은 970 980도 다 되는데
    디코딩 즉 감상하는것까지 GPU로 완벽하게 가속하는건 900시리즈 중 960 950이라고 합니다.

    그리고 970,980은 GPU빨로 과부하 걸려 구동되는게 아니라 CPU와 GPU가 합쳐서 가속을 하는 하이브리드 가속 방식이라고 합니다.
  • ㅇㅇ 2017/10/13 15:48 # 삭제 답글

    HEVC 코덱 관련해서 잘못된 정보들이 많이 떠돌아서
    습관적으로 HEVC 관련 글을 자주 검색해보는데요.
    결론부터 말씀드리자면 본문 글의 내용은 틀렸습니다.

    기술 문서를 보면 H.264/AVC 코덱 대비 최대 60% 압축률이 높다고 나와 있습니다.

    이 말은 압축 옵션을 최대치로 했을 때 60%라는 얘깁니다.
    최대 60%인데 용량을 4배로 줄이는 게 가능할까요?

    60%면 AVC 코덱 기준으로 약 10GB 정도로 압축 가능한 걸
    HEVC 코덱으로는 약 4GB 정도로 압축 가능하다는 얘기가 됩니다.

    그리고 화질이라는 건 디스플레이 화면 크기와 비례합니다.

    PC 모니터는 화면이 너무 작기 때문에 화질 차이를 느끼기 어렵지만,
    50인치 이상의 대형 TV로 보면 화질 차이가 굉장히 심합니다.

    TV로 본다면 일단 UHD TV에서만 HEVC 코덱을 지원하기 때문에
    FHD TV에선 애초에 영상을 재생하는 것 자체가 불가능한 데다가,
    UHD TV로 본다 해도 UHD 해상도에 맞게끔 업스케일링이 되기 때문에,
    FHD 영상을 FHD TV로 보는 것보다 오히려 화질이 더 떨어져 보입니다.

    결과적으로 어떤 규격에도 맞지 않는 엉터리 영상을 만드는 겁니다.

    HEVC 코덱으로 압축한 영상을 돌리려면 CPU는 최소 쿼드급 이상,
    그래픽카드는 최소 GTX900 시리즈 이상은 돼야 하기 때문에
    컴퓨터 사양이 낮은 분들에겐 재생조차 버겁다는 단점도 있습니다.

    한마디로 이도저도 아닌 영상을 만드는데 시간 낭비하는 꼴입니다.
    FHD 영상을 HEVC 코덱으로 인코딩하는 건 삽질입니다.

    HEVC 코덱은 애초에 4K 이상의 초고해상도 UHD 영상에
    대응하기 위해 개발된 코덱으로, FHD 이하의 영상에 사용하면
    부작용만 심각해지기 때문에 UHD 전용 코덱이라고 보는 게 맞습니다.

    UHD 기술은 60인치 이상의 대형 화면에서 화질 열화 없이
    생생하고 선명한 화질로 볼 수 있게 만드는 게 핵심입니다.

    데이터 전송 대역폭이 워낙 높다 보니까 기존의 H.264/AVC 코덱으로는
    기술적으로 UHD 기술 실현이 불가능했기 때문에 UHD 기술을 실현하려면
    새로운 압축기술의 개발이 필요했고, 그래서 만든 게 HEVC 코덱입니다.

    처음부터 UHD 기술 실현을 목적으로 개발한 새로운 표준 코덱으로,
    FHD 이하의 영상에 사용하면 오히려 화질이 떨어지는 결과를 보이고 있습니다.

    최신이라고 해서 무조건 성능이 더 좋다고 말하기 어렵고,
    항상 기존과 상호 호환이 되도록 만들어지는 것도 아닙니다.

    소프트웨어도 간혹 업데이트되면서 기존 버전에서 탈피,
    기존 버전과의 호환성을 버리고 완전 새롭게 출발하는 경우가 있습니다.
    HEVC 코덱이 그런 케이스라고 생각하시면 됩니다.

    H.264/AVC 코덱은 성능이 매우 뛰어난 코덱입니다.
    유명 릴 그룹, 립퍼들이 FHD 영상에 HEVC 코덱을
    사용 안 하는 덴 다 그만한 이유가 있는 겁니다.

    HEVC 코덱이 그렇게 좋다면 왜 전문 지식을 가진 분들은 사용을 안 할까요?
    전문 지식이 없는 분들만 FHD 영상에 HEVC 코덱 사용을 선호하고 있습니다.

    벌써 작성한지 몇 년 지난 글에 굳이 이런 댓글을 남기는 이유는
    몇몇 사이트에서 이 글이 퍼지고 있고, 그로 인해 잘못된 지식이
    급격하게 퍼져 엉터리 영상을 선호하는 분들이 늘고 있기 때문입니다.
  • ㅇㅇ 2018/07/30 02:21 # 삭제

    용량대비 괜찮은 화질을 뽑는다는 것에 의의를 두는 게 아닐까요.

    UHD 시대에 필요한 기술이기에 UHD에 사용하는 것이 가장 적절하며, FHD는 화질이 나빠지니까 쓰면 안 좋다. 라는 취지는 알겠는데.

    엉터리 영상이라고 단정짓는건 굉장한 자만이신듯.
댓글 입력 영역