ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 비디오/오디오 코덱 가이드
    ETC. 2022. 5. 23. 17:33

     

    웹 비디오 코덱의 필요성

     

    압축되지 않은 비디오 데이터는 그 크기가 엄청나기 때문에, 저장하거나 네트워크를 통해 전송하기 위해서는 아주 작게 압축해야 합니다. 압축되지 않은 비디오를 저장하는 과정을 상상해 보자.

     

    • HD(1920x1080) 풀 컬럼(픽셀 당 4바이트) 비디오의 한 프레임은 8,294,400 입니다.
    • 보통 초당 30프레임이므로 HD 비디오 1초는 248,832,000 바이트 (~249MB) 를 잡아 먹습니다.
    • HD 1분은 1.39GB가 필요합니다.
    • 일반적인 30분짜리 비디오 컨퍼런스의 경우 47.1 GB가 필요하며, 2시간짜리 영화는 무려 166 GB 입니다.

     

    비압축된 비디오 데이터는 스토리지 공간이 많이 필요할 뿐만 아니라 네트워크로 전송할 경우에도 어마어마한 대역폭이 필요하고 오디오와 오버헤드를 제외하고도 초당 249MB 가 필요합니다.

     

    여기서 비디오 코덱이 등장하게 됩니다.

     

    오디오 코덱이 사운드 데이터를 처리하듯이 비디오 코덱도 비디오 데이터를 압축하고 적절한 포맷으로 인코딩하여, 이후에 디코딩하여 재생 또는 편집할 수 있도록 합니다.

     

    대부분의 비디오 코덱은 손실 압축입니다. 디코딩을 해도 원본과 완전히 동일하지 않습니다.

     

    디테일한 부분이 사라질 수 있는데 얼마나 사라지는지는 코덱과 설정에 달려있습니다만, 압축율을 높일수록 디테일과 정확도는 감소합니다.

     

    무손실 코덱도 있긴하지만, 보통 기록 보존 및 로컬 재생에만 염두에 두고 있는 경우가 많습니다.

     

    지금부터 웹에서 흔히 볼 수 있는 비디오 코덱을 소개하고 각각의 기능과 호환성, 사용성에 대해 설명하고 여러분에게 필요한 적절한 코덱을 찾는 법을 설명합니다.

     

    일반코덱

     

    일반 코덱

     

    인코딩 관여 요소

    어떤 인코더를 사용하든 인코딩된 비디오의 크기와 퀄리티를 결정하는 두개의 기본적인 그룹 요소가 있습니다.

     

    하나는 소스 비디오의 포맷과 콘텐츠이며 나머지는 인코딩 시 코덱의 특징 및 설정입니다.

     

    요약하자면 인코딩된 비디오가 원본에 가까울수록, 압축율은 적고 비디오 파일 크기는 커집니다.

     

    그러므로 사이즈와 퀄리티는 항상 Trade-off 가 있습니다.

     

    특별한 경우에는 퀄리티 손실을 크게 감수하고서라도 사이즈를 많이 줄여야 할 필요가 있을 수도 있으며 반대로 고용량의 파일을 생성하더라도 퀄리티를 최대한 유지해야 하는 경우도 있습니다.

     

    인코딩된 비디오에 영향을 끼치는 소스 포맷

    소스 비디오의 형식이 출력에 영향을 미치는 정도는 코덱과 작동 방식에 따라 다릅니다.

     

    코덱이 미디어를 내장 픽셀 포맷으로 변환하거나 심플 픽셀 이외의 방식으로 이미지를 표현하는 경우에는 원본 포맷에 따른 차이는 거의 없습니다.

     

    하지만 프레임 레이트나 해상도는 반드시 출력 미디어 크기에 영향을 미치게 됩니다.

     

    또한, 모든 코덱은 각각 장단점이 있습니다.

    어떤 코덱은 특정한 형태와 패턴에 약하거나 엣지 선명도가 약하거나, 암부의 디테일이 떨어지거나 등의 여러가지 문제가 있을 수 있고 모든건 기저의 알고리즘과 수학 공식에 달려있습니다.

     

    인코딩 된 비디오 영향을 줄 수 있는 비디오 포맷과 콘텐츠

     

    위 요소들이 인코딩 된 비디오에 미치는 정도는 선택한 인코더와 설정 등 정확한 상황에 따라 굉장히 다양합니다.

    인코딩 중에 코덱의 일반 옵션에 더해서 프레임 레이트를 줄이거나 노이즈 제거, 비디오 해상도를 줄이는 등 인코더 설정을 추가할 수 있습니다.

     

    인코딩 결과물에 영향을 끼치는 코덱 설정

    비디오 인코딩에 쓰이는 알고리즘은 보통 여러가지의 기술들로 구성되어 있습니다.

    일반적으로 최종 결과물의 크기를 줄이기 위한 설정 옵션은 비디오 퀄리티 하락이나 특정 이슈를 발생시킵니다.

    최종 결과물이 매우 커지지만 오리지널 소스를 완벽하게 재생하기 위해 무손실 인코딩을 택할 수도 있습니다.

     

    또한, 각 인코더 유틸리티는 소스 비디오를 처리하는 방식에 차이가 있어 출력 품질 또는 크기가 다를 수 있습니다.

     

    품질과 크기에 영향을 미치는 비디오 인코더 설정

     

    인코딩 시 설정 가능한 항목과 값은 코덱마다 다를 뿐만 아니라 사용하는 인코더 소프트웨어에 따라서도 다양합니다.

     

    코덱 세부사항

    AV1 (AOMedia Video 1)

    - 코덱은 VP9, H.265/HEVC 보다 압축율이 높으며, AVC 보다 50% 이상 압축율이 높습니다.

    - <video> 요소와 WebRTC 에서 사용하기 위해 설계하였습니다.

    - 압축 알고리즘 : 손실 DCT 기반 알고리즘

     

    AV1

     

    AVC (H.264)

    - MPEG-4 스펙 집합 중 Advanced Video Coding (AVC) 표준은 ITU H.264 스펙 및 MPEG-4 Part 10 스펙과 동일한 것입니다.

    - TV 방송, 영상회의, 블루레이 디스크 미디어를 포함한 모든 종류의 미디어에 사용되는 움직임 보상에 기반한 코덱입니다.

    - 압축 알고리즘 : 손실 DCT 기반 알고리즘, 이미지안에 무손실 매크로 블록 생성 가능합니다.

     

    AVC

     

    H.263

    - ITU의 H.263 코덱은 저대역폭 환경에서 쓰기 위해 설계하였습니다.

    - 저대역폭 네트워크 환경에 최적화되었음에도 CPU에 영향이 크며 저사양 컴퓨터에서 원활하게 동작하지 않습니다.

    - 데이터 포맷은 MPEG-4 Part 2 와 유사합니다.

    - 압축 알고리즘 : 손실 DCT 기반 알고리즘

     

    H.263

     

    HEVC (H.265)

    - High Efficiency Video Coding (HEVC) 코덱은 ITU의 H.265 및 MPEG-H Part 2

    - HEVC 는 현대 프로세서의 특징점을 십분 활용하여 소프트웨어가 초고해상도 비디오 인코딩/디코딩을 효율적으로 할 수 있도록 설계하였습니다.

    - HEVC 는 AVC와 유사한 품질을 유지하면서 절반 크기로 압축할 수 있습니다.

    - 압축 알고리즘 : 손실 DCT 기반 알고리즘

     

    HEVC

     

    MP4V-ES

    - MPEG-4 Video Elemental Stream 포맷은 MPEG-4 Part 2 시각 표준 중 하나입니다.

    - 일반적으로 MPEG-4 Part 2 영상은 다른 코덱에 비해 경쟁력이 부족하여 사용하지 않는 반면, MP4V-ES 는 모바일에서 어느정도 사용이 가능합니다.

    - MP4V 는 본질적으로 MPEG-4 컨테이너의 H.263 인코딩입니다.

    - 압축 알고리즘 : 손실 DCT 기반 알고리즘

     

    MP4V-ES

     

    MPEG-1 Part 2 Video

    - 1990년대 초에 공개 되었습니다.

    - MPEG 비디오 표준과 달리 MPEG-1 은 ITU 개입없이 MPEG 만으로 만들어졌습니다.

    - 압축 알고리즘 : 손실 DCT 기반 알고리즘

     

    MPEG-1

     

    MPEG-2 Part 2 Video

    - ​MPEG-2 사양에서 정의한 비디오 형식이며 ITU 명칭인 H.262 라고도 합니다.

    - MPEG-1 비디오와 매우 유사합니다.

    - 모든 MPEG-2 플레이어는 특별한 작업 없이 MPEG-1 을 자동으로 처리할 수 있습니다.

    - 더 높은 비트 전송률과 향상된 인코딩 기술을 지원하도록 확장되었습니다.

     

    MPEG-2

     

    Theora

    - Xiph.org 에서 개발한 Theora 는 로열티나 라이선스 없이 사용할 수 있는 개방형 무료 비디오 코덱입니다.

    - Theora 는 품질 및 압축률 면에서 MPEG-4 Part 2 Visual 및 AVC 와 비슷하므로 비디오 인코딩을 위한 최고의 선택은 아니더라도 매우 좋습니다.

    - 그러나 라이선스 문제가 없는 상태와 상대적으로 낮은 CPU 리소스 요구 사항으로 인해 많은 소프트웨어 및 웹 프로젝트에서 널리 사용됩니다.

    - 낮은 CPU 영향은 Theora에 사용할 수 있는 하드웨어 디코더가 없기 때문에 특히 유용합니다.

     

    Theora

     

    VP8 (Video Processor 8)

    - 코덱은 처음에 On2 Technologies 에서 만들었습니다.

    - On2 를 인수한 후 Google 은 관련 특허를 시행하지 않는다는 약속하에 VP8 을 공개 및 royalty-free 비디오 형식으로 출시했습니다.

    - 품질 및 압축률 면에서 VP8 은 AVC 와 비슷합니다.

     

    VP8

     

    VP9 (Video Processor 9)

    - Google 에서 개발한 이전 VP8 표준의 후속 제품입니다.

    - VP8 과 마찬가지로 VP9 는 완전히 개방되어 있으며 로열티가 없습니다.

    - 인코딩 및 디코딩 성능은 AVC 와 비슷하거나 약간 빠르지만 품질은 더 좋습니다.

    - VP9 인코딩된 비디오 품질은 유사한 비트 전송률에서 HEVC 와 비슷합니다.

     

    VP9

     

    코덱 선택하기

    - 오픈 포맷을 사용할건가요 ? 상용 코덱도 염두에 두고 있나요 ?

    - 하나의 비디오를 여러 포맷으로 생산할 여력이 되나요 ?

    - 호환성을 포기할 수 있는 브라우저가 있나요 ?

    - 서비스에서 보장하는 가장 오래된 브라우저 버전 범위는 어디까지 인가요 ? ex. 최근 5년간 출시된 모든 브라우저 지원?, 1년 사이의 브라우저만 지원?

     


     

    웹 오디오 코덱 필요성

     

    적당한 품질의 high-fidelity stereo 사운드라도 상당한 디스크 공간을 사용할 수 있습니다.

    웹 개발자에게 더 큰 관심사는 스트리밍용 게임 플레이 중 사용하기 위해 다운로드용 오디오를 전송하는데 필요한 네트워크 대역폭입니다.

     

    인코딩 및 디코딩을 위한 오디오 데이터의 처리는 오디오 코덱(COder/DECoder)에 의해 처리됩니다.

    WebRTC 구현은 일반적으로 미디어 인코딩 및 디코딩에 이러한 코덱의 하위 집합을 사용하며 추가 코덱도 지원할 수 있습니다.

    비디오 및 오디오 회의에 대한 최적의 교차 플랫폼 지원을 위해 레거시 통신 솔루션과 더 잘 통합됩니다.

     

    공통코덱

     

    공통코덱

     

    인코딩된 오디오에 영향을 미치는 요소

     

    오디오 코덱의 인코더에서 출력되는 인코딩된 오디오에 영향을 미치는 요인에는 두가지 일반적인 범주가 있습니다.

    1. 소스 오디오의 형식과 콘텐츠

    2. 코덱 및 인코딩 프로세스 중 구성에 대한 세부정보

     

    소스 오디오 형식의 영향

    인코딩된 오디오는 본질적으로 각 샘플을 나타내는데 더 적은 비트를 사용하기 때문에 소스 오디오 형식은 실제로 예상보다 인코딩된 오디오 크기에 덜 영향을 미칠 수 있습니다.

    그러나 인코딩된 오디오 품질과 크기에 영향을 미치는 요인은 많습니다.

     

    소스 오디오 형식 및 콘텐츠가 인코딩된 오디오 품질 및 크게에 미치는 영향

     

    인코딩된 오디오 출력에 대한 코덱 구성의 영향

     

    오디오 코덱은 일반적으로 소스 오디오 데이터를 가져와 메모리 또는 네트워크 대역폭에서 훨씬 적은 공간을 차지하도록 압축하기 위해 정교하게 설계된 고도로 복잡한 수학적 알고리즘을 사용합니다.

    사용할 인코더 유형을 선택하는 것 외에도 특정 알고리즘을 선택하는 매개변수를 사용하여 인코더를 조정하고 해당 알고리즘을 조정하며 인코딩하는 동안 적용할 패스 수를 지정할 수 있습니다.

     

    소스 오디오 형식 및 콘텐츠가 인코딩된 오디오 품질 및 크기에 미치는 영향

     

    인코딩된 오디오 크기에 영향을 주는 기능

    - 무손실 코덱 대 손실 코덱

    - 최대 채널 수

    - 오디오 주파수 대역폭

     

    코덱 세부사항

     

    AAC (Advanced Audio Coding)

    - AAC 코덱은 MPEG-4 (H.264) 표준의 일부로 특히 MPEG-4 Part 3 및 MPEG-2 Part 7 일부로 정의됩니다.

    - MP3 보다 높은 오디오 충실도로 더 많은 압축을 제공할 수 있도록 설계된 AAC 는 Blue-Ray 디스크 및 HDTV 를 비롯한 여러 유형의 오디오에 대한 표준 형식입니다.

     

    AAC

     

    * 특허 문제로 Firefox 는 AAC 를 직접 지원하지 않습니다.

    * Chrome 은 MP4 컨테이너에서만 AAC 를 지원하며 AAC 의 기본 프로필만 지원합니다.

    * AAC 는 Chromium 빌드에서 사용할 수 없습니다.

     

     

    ALAC (Apple Lossless Audio Codec)

    - Apple 에서 개발한 무손실 코덱입니다.

    - 초기에 패쇄형 형식이었던 Apple 은 Apache 라이선스로 이를 개방했습니다.

    - ALAC 코덱은 플랫폼 간 브라우저 지원은 범위가 좁아 이상적인 선택은 아닙니다.

    - 하지만, macOS 및 iOS 사용자인 경우 ALAC 지원이 통합되어 있어 가치가 있습니다.

    - 무손실 코덱을 사용해야 하는 경우 FLAC 가 더 좋습니다.

     

    ALAC

     

    AMR (Adaptive Multi-Rate)

    - AMR 코덱은 사람의 음성을 효율적으로 인코딩하도록 최적화되어 있습니다.

    - multi-rate narrowband 알고리즘을 사용하여 약 7.4kbps 전화급 품질 수준에서 오디오 주파수를 인코딩합니다.

    - 실시간 전화통신에 사용되기도 하며 음성메일 및 기타 짧은 오디오 녹음에 사용될 수 있습니다.

     

    AMR

     

    * Chrome 브라우저는 AMR 을 지원하지 않지만 Chrome OS 는 AMR-NB(협대역) 및 AMR-WB(광대역)를 지원합니다.

     

    FLAC (Free Lossless Audio Codec)

    - FLAC 는 Xiph.org 재단에서 공개한 무손실 오디오 코덱입니다.

    - 오디오 손실 없이 우수한 압축률을 제공합니다.

    - 압축 해제된 오디오가 원본과 동일합니다.

    - 범용 압축 알고리즘을 사용하여 더 나은 오디오 결과를 제공합니다.

     

    FLAC

     

    G.711 (Pulse Code Modulation of Voice Frequencies)

    - ITU (International Telecommunications Union) 에서 발행한 G.711 사양은 전화 애플리케이션을 위한 표준 오디오 인코딩을 정의하기 위해 1972년 발행되었습니다.

    - 전화 트래픽 및 음성 메일에 광범위하게 사용되며 공중 전화망을 통해 전송할 수 있는 최고 품질의 오디오 인코딩입니다.

    - 다양한 음성 수준 (속삭임에서 고함까지) 지원하도록 최적화되었습니다.

     

    G.711

     

    * G.711 은 WebRTC 연결에 대해서만 지원됩니다.

     

    G.722 (64 kbps (7 kHz) audio coding)

    - ITU (International Telecommunications Union) 에서 출시한 G.722 코덱은 음성 압축을 위해 설계되었습니다.

    - 음악과 같이 사람의 음성 범위를 벗어날 수 있는 오디오를 처리하는데 적합하지 않습니다.

    - ADPCM (Adaptive Differential Pulse Code Modulation)을 사용하여 인코딩되고 각 샘플은 절대값이 아니라 새 샘플이 이전 샘플과 얼마나 다른지를 나타내는 값입니다.

     

    G.722

     

    * WebRTC 전용

     

    MP3 (MPEG-1 Audio Layer III)

    - MPEG/MPEG-2 표준으로 지정된 오디오 형식 중에서 MPEG-1 Audio Layer III 는 가장 많이 사용되고 있습니다

    - MP3 코덱은 MPEG-1 Part 3 및 MPEG-2 Part 3 로 정의되며 1991년에 도입되어 1992년에 완성되었습니다.

    - MPEG-1 형식 MP3 는 일반적으로 음악이나 기타 복잡한 오디오에 가장 적합하며 MPEG-2 모드 MP3 오디오는 음성 및 기타 간단한 사운드에 적합합니다.

     

    MP3

     

    Opus

    - Xiph.org 재단에서 완전 개방형 오디오 형식으로 만들었습니다.

    - IETF 에서 RFC 6717 으로 표준화했습니다.

    - 복잡도가 낮은 오디오는 물론 음악 및 기타 복잡도가 높은 사운드를 모두 효율적으로 처리할 수 있는 우수한 범용 오디오 코덱입니다.

     

    Opus

     

    * WebRTC 가 아니라 HTML <audio> 및 <video> 요소에서 Opus 에 대한 지원을 나타냅니다

    * Safari 는 CAF 파일로 패키징된 경우에만 <audio> 요소에서 Opus 를 지원하며 macOS High Sierra (10.13) 또는 iOS 11 에서만 지원합니다.

     

    Vorbis

    - monaural, stereo, polyphonic, quadraphonic, 5.1 surround, ambisonic 또는 최대 255개의 개별 오디오 채널을 포함한 광범위한 채널 조합을 지원하는 Xiph.org 재단의 개방형 형식입니다.

    - Vorbis 는 본질적으로 가변 비트율 인코딩을 사용합니다.

    - 비트 전송률은 압축 프로세스 중에 필요에 따라 샘플마다 다를 수 있습니다.

     

    Vorbis

     

    * WebRTC 가 아니라 HTML <audio> 및 <video> 요소의 Vorbis 지원을 나타냅니다.

     

    오디오 코덱 선택

    오디오에 사용할 코덱을 선택할 때 먼저 다음 질문을 고려해야 합니다.

     

    - 인코딩된 오디오가 리믹스되거나 다시 압축됩니까 ?

    - 코덱은 어떤 종류의 오디오 콘텐츠를 처리합니까 ?

    - 오디오가 특정 파일 형식으로 사용해야 하는 경우, 미디어 컨테이너는 일반적으로 사용 가능한 코덱의 하위 집합을 지원하므로 체크해야합니다.

    - 각 코덱에 좋은 선택이 될 수 있는 비트 전송률 및 기타 구성 가능한 속성은 무엇입니까 ?

    - 대기시간이 중요합니까 ? 정확한 타이밍의 사운드가 필요한 경우 레이턴시가 낮을수록 좋습니다.

    - 얼마나 많은 압축을 달성해야 합니까 ?

     


     

    고해상도 음원을 알아보자!

    고해상도 (Hi-Resolution) 음원은 다양한 포맷이 존재하고 있습니다.

    파일의 형식이 바뀌면 소리의 음질이 바뀌게 되며, 파일크기도 달라지기 때문에 사용하고자하는 재생기기 / 소프트웨어에서 해당 포맷을 대응하고 있는지 여부에 따라 포맷 선택을 해야합니다.

     

    http://wellemagazine.com/blog/2017/07/12/dsd-flac-mqa/

     

    고해상도 음원, DSD,FLAC,MQA의 차이는? – 벨레 매거진

    “Hi-Resolution Audio 음원”. DSD, FLAC, MQA 등의 차이는? “고해상도(Hi-Resolution)음원”이라고 한단어로 부르고 있지만, 사실은 다양한 포맷이 존재하고 있다. 파일의 형식이 바뀌면 소리의 정보량 나

    wellemagazine.com

     

     


    https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Video_codecs#%EC%BD%94%EB%8D%B1_%EC%84%B8%EB%B6%80%EC%82%AC%ED%95%AD

     

    Web video codec guide - Web media technologies | MDN

    This guide introduces the video codecs you're most likely to encounter or consider using on the web, summaries of their capabilities and any compatibility and utility concerns, and advice to help you choose the right codec for your project's video.

    developer.mozilla.org

     

    https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Audio_codecs

     

    Web audio codec guide - Web media technologies | MDN

    Even modest quality, high-fidelity stereo sound can use a substantial amount of disk space. For web developers, an even bigger concern is the network bandwidth needed in order to transfer audio, whether for streaming or to download it for use during gamepl

    developer.mozilla.org

     

    'ETC.' 카테고리의 다른 글

    내가 공부한 도커 핵심요약  (0) 2022.06.17
    Azure Media Services v3  (0) 2022.04.22
    영상 스트리밍 고찰  (0) 2022.04.20
    오픈소스 프로그래밍 Docker  (0) 2022.03.07
    SourceTree 사용법  (0) 2021.11.26
Designed by Tistory.