최근 수정 시각 : 2024-08-02 10:44:48

H.264

x264에서 넘어옴
🎞️ 비디오 코덱 및 포맷
{{{#!wiki style="margin: 0 -10px -5px; min-height: 26px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1.5px -13px"
<colbgcolor=#555>
<colbgcolor=#555> MPEG-1 · MPEG-2 Part 2(H.262) · MPEG-4 Part.2 ( DivX · Xvid) · H.261 · H.262 · H.263 · H.264 · H.265 · H.266
기타 DV · WMV · Theora · VP8 · VP9 · AV1 · Apple ProRes · Bink · GoPro CineForm · Motion JPEG
컨테이너(확장자) ASF · AVI · BIK · FLV · MKV · MOV · MP4 · MPEG · OGG(OGV) · SKM · TS · WebM · WMV
관련 틀: 그래픽 · 오디오 · 비디오
}}}}}}}}} ||


1. 개요2. 효율
2.1. 2010년대 중반 이후
3. 방송 규격4. 느린 보급 속도5. 프로파일
5.1. 종류
6. 버전7. 레벨8. 여담

1. 개요

2003년에 발표된 동영상 표준 규격. 기존 MPEG-4 Part 2보다 발전된 비디오 코딩이라 AVC(Advanced Video Coding)로도 통용된다. FourCC[1]는 AVC1 혹은 H264이다.

후속 규격인 H.265(HEVC), H.266(VVC)가 등장했으나, 해당 규격의 압축 알고리즘 복잡성으로 인한 성능문제(과부하[2])와 복잡한 라이선스 문제[3]가 있어, 여전히 H.264가 현역으로 사용된다. 다만 VP9,AV1의 도래 및 사용자들의 고해상도 모니터의 급속도로 늘어나며 현역은 현역이나 이제는 한계가 조금씩 드러나는 중인 코덱이다.

2. 효율

화질 향상 겸 H.263의 두 배의 압축률을 가지는 것으로 목표로 개발되었고, 실제로 두 배에 가까운 효율을 구현한다. H.262와 H.263 모두를 대체할 만한 코덱으로, 압축률도 좋을뿐더러 비교적 낮은 비트레이트에서도 좋은 화질을 가진다. 특히 이제까지의 MPEG 계열의 영상 코덱에서 잘 나타나던 눈엣가시인 깍두기 현상이 많이 줄어들었다.

H.262/MPEG-2 Part 2 기반의 2시간 분량 DVD(통상 2시간 15분 분량)를 H.263 또는 MPEG-4 Part 2( DivX, Xvid)에서는 VCD 2장에 담을 수 있었다면, H.264/MPEG-4 Part 10(AVC)에서는 VCD 1장에 담을 수 있는 압축 효율이라는 것. 사실 꼼수가 동원되어야 1장이라는 것이지 꼼수 없이 변환하려면 VCD 1장 반 정도인 1GB 용량은 되어야 한다. ( VHS나 12cm 디스크를 넣는 카메라처럼 미니 디스크를 넣는 타입에 쓰라고 만든 6cm짜리를 쓰면 1.4~1.6GB 정도가 나온다. 듀얼 레이어 미디어만 2GB대이다. 가격은 M.disc 가격만큼 비싸다.) 그래도 압축수준의 차이일 뿐 기존 코덱보다 압축률은 좋다.

2.1. 2010년대 중반 이후

H.265, VP9, AV1과 같은 고사양 고압축 코덱이 등장하고 MPEG-2, Xvid, WMV와 같은 저압축 코덱을 거의 사용하지 않게 됨에 따라 H.264는 압축률이 낮고 가볍다는 인식이 자리 잡았다.

H.264 코덱은 압축률이 상대적으로 정말 좋으나, 인코더 성능과 옵션에 따라 절대적인 화질이 개떡이 될 수도 있다. 해상도가 높은 영상을 과거와 같은 대역폭(bps)으로 인코딩을 하면 화질에 손해를 볼 수밖에 없고, 이를 방지하기 위해 최신코덱을 찾게 된다.

실시간 인코딩[4]에서 움직이는 피사체(픽셀)이 많아지면 갑자기 깍두기가 창궐하는 모습을 쉽게 찾아볼 수 있다. 한정된 비트레이트 제약 안에서 인코딩을 해야 하는데, 인코딩 속도를 위해 움직임 검색 옵션을 대폭 낮춰 효과적인 압축을 할 시간이 없기 때문이다. 때문에 최신코덱(실시간 인코딩을 위해 하드웨어 인코딩 수행) 영상보다 화질이 매우 떨어지는 것이다. 네이버스포츠 저화질 중계, 꽃가루가 날리는 음악방송 등에서 깍두기가 출몰한다. 이를 해결하기 위해서는 충분히 높은 대역폭(bps)를 제공해주면 참 쉽게 해결이 된다. 왠지 이 말은 과거 MPEG2 국내 지상파 HD방송 시점에서도 했던 말이긴 하지만(...)

3. 방송 규격

블루레이에 기본 코덱으로 채택되면서 H.264가 사용되기 시작되었다.

2006년 12월, HD 방송 규격에도 채택되어 싱가포르의 Mediacorp HD5가 세계 최초로 H.264로 송출되었다. DVB-T 방식으로 방송되었다.[5]

이어서 일본 일부 지역과 유럽 쪽에서도 H.264로 HD 방송이 송출되기 시작했다. 이즈음 한국도 H.264로 바꿔주세요. 현기증 난단 말이에요란 밈이 퍼지기도 했다. 일단 IPTV, 케이블 UHD 방송을 중심으로 H.264로 전환되기 시작했다. 지상파 방송의 경우 H.262(MPEG2)에서 H.264로 넘어가기 이른감이 있어 지지부진 하다가 지상파 UHD 방송을 시작히는 기점(2016년 전후)에 H.264를 건너뛰고 ATSC 3.0 즉 H.265를 채택했다. 모바일 방송인 DMB는 처음부터 H.264를 채택했다.

4. 느린 보급 속도

정말 놀라운 화질을 보여줬지만 DivX, Xvid 대비 놀랍도록 높은 성능을 요구했기에 보급은 더뎠다. 발표 당시의 컴퓨터 사양으로는 벅찼고 제대로 GPU 가속을 지원하는 코덱의 보급마저 늦었으며 발표한 지 3년 후 2006년 7월 코어 아키텍처 기반의 코어2 듀오가 출시되기 전까지는 CPU 성능만으로 1080p Full HD는커녕 720p HD 영상조차 재생하기에는 벅찼다. 2005년 펜티엄 D에 와서야 별다른 조치 없이 720p 30fps 영상이 간신히 재생되었을 정도. 그래서 하드웨어 가속을 GPU에 구현하는 쪽으로 선회했으며, 이를 추상화하는 인터페이스가 MS의 DXVA이다. 주요 GPU 가속 기술은 다음과 같다.
  • 인텔 Clear Video: 인텔 메인보드 내에 온보드 형태로 내장된 GMA 계열의 디코더 전용 기술이었다. 2010년 클락데일 CPU의 내장그래픽부터는 Clear Video HD로 적용되었다.
  • 인텔 Quicksync Video: 2011년 샌디브릿지부터 적용된 인텔 비디오 인코더 겸 디코더 기술이다.
  • AMD AVIVO: 2005년 라데온 X1000 시리즈부터 도입된 기술로, 2007년 중반부터 UVD라는 이름으로, 2017년 10월부터 VCN라는 이름으로 사용되고 있는 기술.
  • NVIDIA PureVideo: 2004년 지포스 6600 시리즈부터 적용된 기술.

이런 가속 버프를 받으려면 해당 기술을 지원하는 그래픽카드를 장착하고 셋팅해야 가능하다. 설령 H.264 하드웨어 가속을 지원하는 보급형 그래픽카드가 장착된 PC가 많았더라도 엔비디아 제어판, 동영상 플레이어의 코덱 설정 등 그걸 다룰 줄 아는 일반인들이 상대적으로 많지 않고 운영체제 자체적으로 지원하지 않았을 때라 널리 쓰이기까지 규격 발표 이후 6년 넘게 걸렸던 것이다. 그래도 기술의 발전은 무서운 것이어서 2009년에 출시된 Windows 7에 들어서야 H.264용 코덱이 기본으로 내장되고, 그 시기에 대응 소프트웨어도 널리 보급된데다 CPU 성능도 나날이 높아져서 널리 사용하게 되었다.

Windows 7이 제대로 돌아갈 성능이라면 이 코덱의 영상 재생에는 기본적인 문제는 없다. Windows 7 운영체제에 2006년 7월 이후에 출시된 중급형 라인 이상의 코어2 듀오 CPU라면 무난하게 1080p 영상을 감상할 수 있다. 2011년부터는 PC뿐만 아니라 일부 하이엔드급 스마트폰으로도 웬만한 1080p 30fps 정도는 가뿐하게 돌리는 편이다. 단, 4K UHD(3840×2160) 이상의 고해상도에서는 어지간한 컴퓨터에서도 재생이 어려운 좌절영상이 되기 쉽다.

5. 프로파일

H.264는 개발될 당시의 컴퓨터 사양이 부족하다는 것을 알았고 프로파일과 레벨별로 나누어 해당되는 몇가지 규격에 맞추면 저사양에서도 무리없게 돌릴 수 있도록 설계가 되어 있다. 이와 관련된 내용은 영어 위키백과에 상세히 나와 있다. 참고 영어의 압박 물론 고사양 용으로 만들어진 영상을 저사양에서도 돌릴 수 있다는 말은 아니라는 게 함정. 디블럭(Deblock) 필터 같은 걸 꺼서 저사양에서도 안 끊기게 보는 방법도 있지만 대신 깍두기 현상이 난무하게 되는 단점이 있다.

만일 H.264 영상이 제대로 돌아가지 않아 고민이라면 LAVFilters 항목을 참고

5.1. 종류

  • Baseline
  • Constrained Baseline
  • Main
  • Extended
  • High
  • High 10
  • High 10 intra
  • High 4:2:2
  • High 4:2:2 intra
  • High 4:4:4 Predictive
  • High 4:4:4 intra
  • CAVLC 4:4:4 intra
  • Multiview High

6. 버전

  • Version 1 (2003년)
    • Baseline : H.264 중에서 복잡도가 가장 낮은 타입으로, 주로 스마트폰, 태블릿, 동영상 기능이 있는 MP3 플레이어에서 재생할 동영상에 많이 쓰인다. 화질이 중요하지 않고, 모바일 기기에 주로 재생할 것이라면 이 타입으로 인코딩하는 것이 좋다. 하지만 2015년 기준으로 스마트폰과 태블릿의 성능이 많이 향상되어 초저가형이 아닌 이상 굳이 이 프로파일을 고집할 필요는 없다. EBSi의 인강 동영상 파일은 720p급 조차도 이 프로파일로 인코딩되어 있다.
    • Main : 중간 타입. 480p 동영상은 이쪽이 많다. SD화질 방송용으로도 쓰인다.
    • Extended : 데이터가 일부분 누락되어도 최대한 재생이 되도록 스트리밍에 최적화 되어있다.
  • Version 2 (2004년)
    • 기존 Version 1의 마이너 체인지 버전.
  • Version 3 (2005년)
    • High : HD급 혹은 Full HD급 고화질 동영상에 많이 쓰인다. 연산이 가장 많이 소요되는 타입이라 저사양 기기에서 사용 시 CPU에 무리를 줄 수 있다. 720p 이상 동영상에 많으며 1080p에서는 사실상 표준이다. Full HD급 최신 태블릿은 High를 지원하므로, High로 맞춰 인코딩 하자.
    • High 10
    • High 4:2:2
    • High 4:4:4
  • Version 4 (2005년)
    • 기존 Version 3의 마이너 체인지 버전. 새로운 종횡비가 일부 추가.
  • Version 5, 6 (2006년)
    • Version 3부터 존재했던 High 4:4:4 프로필이 제거되고 확장된 색역을 추가.
  • Version 7 (2007년)
    • High 4:4:4 Predictive
    • High 10 Intra
    • High 4:2:2 Intra
    • High 4:4:4 Intra
    • CAVLC 4:4:4 Intra
  • Version 8 (2007년)
    • Scalable Video Coding(SVC) 기술이 추가.
    • Scalable Baseline
    • Scalable High
    • Scalable High Intra
  • Version 9 (2009년)
    • 기존 Version 8의 마이너 체인지 버전.
  • Version 10 (2009년)
    • Constrained Baseline
  • Version 11 (2009년)
    • Multiview Video Coding(MVC) 기술이 추가.
    • Multiview High
  • Version 12, 13 (2010년)
    • Stereo High
  • Version 14, 15 (2011년)
    • 4K UHD 해상도를 지원하는 Level 5.x 항목이 추가.
    • Progressive High
  • Version 16 (2012년)
    • Constrained High
    • Scalable Constrained Baseline
    • Scalable Constrained High
  • Version 17, 18, 19, 20 (2013년)
    • 3D 스테레오스코픽 비디오를 위한 깊이 맵 데이터 코딩이 추가.
    • 멀티뷰 비디오를 위한 확장된 서브-비트스트림의 에러 검출 기능이 추가.
    • 4K UHD TV를 위한 Rec. 2020 색공간 추가.
    • Multiview Depth High
  • Version 21, 22 (2014년)
    • Enhanced Multiview Depth High
    • Multi-resolution Frame Compatible(MFC) High
  • Version 23 (2016년)
  • Version 24 (2016년)
    • 8K 해상도 지원 (레벨 6, 6.1, 6.2)
  • Version 25 (2017년)
  • Version 26 (2019년)
  • Version 27 (2021년)

7. 레벨

Level 최대 비트레이트 최대 해상도
최대 프레임속도
Baseline Profile
Main Profile
Extended Profile
High Profile High 10 Profile High 422 Profile
High 444 Profile
1.0 64kbps 80kbps 192kbps 256kbps 128x96 30.9fps
176×144 15.0fps
1.0b 128kbps 160kbps 384kbps 512kbps
1.1 192kbps 240kbps 576kbps 768kbps 176×144 30.3fps
320x240 10.0fps
352x288 7.5fps
1.2 384kbps 480kbps 1,152kbps 1,536kbps 320x240 20.0fps
352x288 15.2fps
1.3 768kbps 960kbps 2,304kbps 3,072kbps 320x240 36.0fps
352x288 30.0fps
2.0 2Mbps 2.5Mbps 6Mbps 8Mbps
2.1 4Mbps 5Mbps 12Mbps 16Mbps 352x480 30.0fps
352x576 25.0fps
2.2 352x480 30.7fps
352x576 25.6fps
720×480 15.0fps
720×576 12.5fps
3.0 10Mbps 12.5Mbps 30Mbps 40Mbps 352x480 61.4fps
352x576 51.1fps
720×480 30.0fps
720×576 25.0fps
3.1 14Mbps 17.5Mbps 42Mbps 56Mbps 720×480 80.0fps
720×576 66.7fps
1280×720 30.0fps
3.2 20Mbps 25Mbps 60Mbps 80Mbps 1280×720 60.0fps
1280x1024 42.2fps
4.0 1280×720 68.3fps
1920x1080 30.1fps
2048x1024 30.0fps
4.1 50Mbps 62.5Mbps 150Mbps 200Mbps
4.2 1280×720 145.1fps
1920x1080 64.0fps
2048x1080 60.0fps
5.0 135Mbps 168.75Mbps 405Mbps 540Mbps 1920×1080 72.3fps
2048x1024 72.0fps
1920x1080 67.8fps
2560×1920 30.7fps
3672×1536 26.7fps
5.1 240Mbps 300Mbps 720Mbps 960Mbps 1920×1080 120.5fps
2560×1920 51.2fps
3840×2160 31.7fps
4096×2048 30.0fps
4096×2160 28.5fps
4096×2304 26.7fps
5.2 1920×1080 172.0fps
2560×1920 108.0fps
3840×2160 66.8fps
4096×2048 63.3fps
4096×2160 60.0fps
4096×2304 56.3fps
6.0 3840x2160 128.9fps
7680x4320 32.2fps
8192x4320 30.2fps
6.1 480Mbps 600Mbps 1,440Mbps 1,920Mbps 3840x2160 257.9fps
7680x4320 64.5fps
8192x4320 60.4fps
6.2 800Mbps 1Gbps 2.4Gbps 3.2Gbps 3840x2160 300fps
7680x4320 128.9fps
8192x4320 120.9fps

8. 여담

  • AVI, MKV, MP4 컨테이너에서 지원하고 있다.
  • 잘 알려진 H.264구현 중 하나인 x264의 경우 초창기에는 기본 옵션이 최적화되지 못해서 그냥 인코딩하면 화질이 별로였지만 2009년 이후로는 최적화된 preset을 내장시켰기 때문에 기본값으로 대충 인코딩해도 최상의 결과를 얻을 수 있다.
    • libx264에는 디코딩 부분이 구현되어 있지 않다.
  • 쿼드코어의 인텔 코어 i5급은 되어야 720 30fps 영상을 실시간으로 인코딩할 수 있다.[6] 스마트폰은 더 낮은 성능의 CPU로 4K급 인코딩이 가능한 기종도 있는데 그건 전용 하드웨어(DSP)와 그 하드웨어에 최적화된 코덱을 사용하기 때문이다. 다만 720에서 1080으로 넘어가는 시기 CPU가 급속한 성능 향상을 보였기에, 현재는 보급형 CPU에서도 실시간 인코딩이 가능한 수준이다.
  • H264 코덱 중 Cisco Systems의 OpenH264는 해당 바이너리(소스코드 아님)를 사용하는 모든 소프트웨어 프로젝트에 대해 MPEG LA를 사용하는 로열티를 대신 지불해준다. 즉 바이너리( DLL 등)만 사용하는 경우에는 무료로 사용 가능한 인코딩 모듈.
  • 2023년~2027년 사이 주요 특허가 만료될 예정이다.
  • 드물지만, 영상의 종류와 비트레이트 구간에 따라 H.264로 인코딩 된 영상이 H.265/HEVC와 AV1 보다 더 나은 경우가 있다. H.265와 AV1 같은 경우 전체적인 감마를 떨어뜨리며 압축 효율을 높였으므로 깍두기 현상은 적지만, 일반적으로 영상에서 특정한 캐릭터를 볼 때 알아차리기 힘들어지는 역효과가 발생하기도 한다. 반지의 제왕같이 배경이 중요한 동영상의 경우 H.264를 선택하는 것이 더 좋은 화질을 얻을 수도 있다. 물론 H.264가 더 나은 코덱이라는 결론을 내리긴 어려운게, 태생적인 압축률 한계로 인해 고해상도 또는 저 비트레이트로 인코딩한다면 H.265와 AV1을 이길 수 없다. 4K UHD나 HDR 영상의 화질을 온전히 보존하려면 H.264의 압축력으로는 감당 불가능한 용량이 나와서, 고해상도에선 H.265 이상의 최신 코덱들이 강제되는 수준이다.


[1] Four Character Code. 여기서는 동영상 코덱을 표시하는 4바이트 코드를 말한다. [2] H.265는 H.264보다 약 5배 이상의 연산량을 요구하며, H.266은 16K 영상과, 360도 영상등 미래를 생각하여 개발된 규격이기에 그 H.265보다도 최대 10배 이상 무겁다. 고로 H.264대비 약 50배 무거운셈. [3] 윈도에선 H.265 디코더를 1200원에 팔고있다. 유료로 구입한 장치(하드웨어)의 제조사가 코덱을 무료로 제공해 주거나, 개인용/비상업용으로 제한된 코덱 내장 플레이어를 쓰면 해결되는 문제지만, 플러그인 개념이 희박한 일반인은 그냥 H.265 영상이 기본 프로그램으로 재생이 안 된다고 보고 포기하는 경우가 많다. 이에 앞서 애초에 "상업용"으로 H.265 영상을 제공하지 않는 곳이 매우 많다. [4] 인코딩 할 충분한 시간을 주지 않는다. 최신코덱의 강력한 압축성능을 활용할 시간조차 없다. 때문에 오래 사용되어 기술이 성숙한 익숙한 코덱을 쓰는 경향이 있다. 아니면 하드웨어 가속 인코딩을 쓴다. 애초에 여유를 두고 인코딩 하는 것에 비해 화질은 떨어지는 경향이 있는게 정상이다. [5] 하지만 2013년부터 싱가포르 디지털 TV가 DVB-T2로 완전 이행되고 채널 5를 포함한 모든 채널이 HD화되면서 2017년 3월 1일에 방송을 종료했다. [6] 샌디브릿지 시절 기준.