Media

Codec 및 미디어 콘텐츠의 재생

도비야 산책가자 2020. 9. 6. 23:44

Codec정의

Codec = 코더coder + 디코더decoder = co/dec

데이터 스트림이나 신호에 대해 인/디코딩 혹은 둘다 지원하는 HW/SW 및 알고리즘 또는 규칙을 통칭하는 말이다.

 

압축 품질에 따라 손실코덱 비손실 코덱 무압축 등으로 불린다.

 이름을 통해 유추 가능하다 싶이 손실코덱은 실제로 손실이 발생하며, 사람이 잘 느끼지 못하는 부분에 대해 우선적으로 손실 압축을 이룬다.

 비손실 코덱은 압축된 데이터가 원본 스트림 내에 존재하는 모든 정보를 보유하고 있는 코덱을 말한다.

 무압축의 경우 디지털 데이터가 다른 코덱 등을 거치지 않고 저장/변환 되는경우를 말한다.

 

일반 코덱

아래는 대표적인 비디오 코덱이다.

코덱과 컨데이너는 다른 것이며, 코덱의 정의는 위와 같다. 컨테이너란 코덱으로 압축된 신호를 담을 수 있는 말 그대로 container다. 규격에 맞춘 상자쯤으로 생각하면 될 것이다.

코덱 축약어 Full Name 지원 컨테이너
AV1 AOMedia Video 1 MP4, WebM
H.263 H.263 Video 3GP
AVC (H.264) Advanced Video Coding 3GP, MP4, WebM
HEVC (H.265) High Efficiency Video Coding MP4
MP4V-ES MPEG-4 Video Elemental Stream 3GP, MP4
MPEG-1 MPEG-1 Part 2 Visual MPEG, QuickTime(.mov)
MPEG-2 MPEG-2 Part 2 Visual MP4, MPEG, QuickTime(.mov)
Theora Theora Ogg
VP8 Video Processor 8 3GP, Ogg, WebM
VP9 Video Processor 9 MP4, Ogg, WebM

다음은 Media 인디코더에서 지원 파일 포맷에 대한 내용이다. 파일 컨테이너 종류에 대한 내용은 다음 링크를 참고하자.

Media Encoder 지원 파일 포맷 : https://helpx.adobe.com/kr/media-encoder/user-guide.html/kr/media-encoder/using/file-formats-supported-import.ug.html

 

Adobe Media Encoder User Guide

 

helpx.adobe.com

 

대부분의 미디어 콘텐츠는 Codec을 이용하여 인코딩하며, HW 인코더 및 SW 인코더를 사용한다.

하기는 안드로이드 미디어 프레임워크 교재에 나온 내용을 읽고 나름 이해/정리한 부분이다. 

 

Video Info → VideoEncoder → 
                                           → Media Container → Media Contents
Audio Info → AudioEncoder → 

 

예를 들어 위의 흐름으로 보자면 

(input)영상정보를 카메라로 음성 정보를 마이크로 받음 (data type : analog data) → 
(translate) 아날로그 신호를 샘플링하여 디지털 신호로 변환 (data type : digital data) →
(incoding) codec을 사용하여 인코딩 (data type : incoding data)→ 
(containing)
 인코딩된 영상 , 음성데이터는 각 컨테이너 명세에 맞춰 하나의 파일에 담겨짐(multimedia contents)

으로 구성 할 수 있다.

 

미디어 컨텐츠를 재생할 경우 파서를 비디오, 오디오, metadata(자막 등)가 분리되며 디코더를 통해 디코딩 및 렌더러를 통해 출력된다.

 

 파서는 미디어 파일 및 스트리밍 정보를 받아 재생에 필요한 metadata 및 Video Stream과 Audio Stream을 분리 및 디코더에게 전달한다.

 디코더는 받은 인코딩 미디어 데이터를 디코딩하여 렌더러에게 전달하며 파서로부터 음성 및 영상정보를 받았으므로 두개의 디코더가 생성된다. 영상은 일반적으로 YUV타입의 RAW영상이 출력되며, 음성은 PCM 타입의 RAW정보를 출력한다.

 렌더러는 디코더로 부터 받은 RAW 미디어 정보를 장치를 통해 출력 할 수 있도록하며, DAC를 거쳐 스피커로 출력하는 역할을 한다.