트랜스코드 vs 트랜스레이트 vs 트랜스먹스

와우자 스트리밍 엔진에서 트랜스코드는 코덱이나 인코딩 설정을 변경하고, 트랜스레이트는 동일 코덱을 유지하면서 비트레이트를 변경하며, 트랜스먹스는 코덱을 다시 인코딩하지 않고 스트림 구성·컨테이너·전송 형식을 바꾸는 작업이다. MPEG-TS의 PID·PAT·PMT·PCR 구조와 먹싱, 인코딩·디코딩 및 코덱의 개념을 바탕으로 세 용어의 차이를 설명한다.

와우자 스트리밍 엔진의 두 가지 핵심 역할

와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)은 여러 가지 기능을 제공하고 있는데, 크게 두 가지 중요한 영역으로 구분할 수 있다.

오리진(Origin)
콘텐츠 파일 또는 소스 스트림을 네트워크를 통해 스트리밍한다.
네트워크에 스트림을 게시(publish)하고 스트리밍 지점(Origin)을 생성한다.
트랜스코더(Transcoder)
입력받은 소스 콘텐츠를 다양한 형식으로 변환한다.

실제 스트리밍 환경에서는 오리진과 트랜스코더가 하나의 처리 과정 안에서 연속적으로 동작하는 경우가 많다. 예를 들어 외부 인코더의 스트림을 와우자가 수신하고, 트랜스코더에서 변환한 뒤, 오리진 기능을 통해 시청자와 CDN에 전달하는 방식이다.

먹싱과 인코딩

트랜스코드, 트랜스레이트, 트랜스먹스에 대한 이야기를 하기 전, 먼저 몇 가지 기본적인 용어와 개념에 대한 정리가 필요하다. 여러 종류의 스트림 형식이 존재하지만, 가장 기본이 된다고 할 수 있는 MPEG-TS를 기준으로 스트림에 대한 기본적인 내용을 설명한다.

MPEG-TS의 구조

MPEG-TS(MPEG Transport Stream)는 비디오와 오디오, 부가 데이터 등을 하나의 전송 스트림으로 묶어 전달하는 형식이다. 전송 과정에서 오류가 발생할 수 있는 환경에 적합하도록 설계되었으며, 디지털 지상파 방송, 디지털 CATV, IPTV와 위성 방송 등 전통적인 텔레비전 방송 송출 시스템에서 널리 사용되고 있다.

MPEG-TS는 오디오와 비디오 데이터 스트림, 그리고 이들을 보조하는 추가 데이터 스트림으로 이루어진다. 각 데이터 스트림은 고유한 PID를 가지고 구분할 수 있으며, PAT, PMT, PCR과 같은 추가 정보와 함께 하나의 스트림으로 만들어진다.

MPEG-TS 데이터를 실시간으로 네트워크에 전송하면 일반적으로 MPEG-TS 스트림이라 부르고, 동일한 전송 패킷 구조를 파일에 연속적으로 기록하면 MPEG-TS 파일이라고 부른다. 두 형태는 저장 위치와 전달 방식은 다르지만 내부적인 스트림 구조는 본질적으로 유사하다.

현장에서는 PID를 해당 PID를 달고 있는 데이터 스트림과 같은 의미로 줄여 말하는 경우가 많다. PMT에는 비디오 PID가 등록되어 있지만 실제 비디오 데이터가 없는 경우, 아래와 같이 표현하는 식이다.

비디오 PID가 없는데? PMT에만 들어 있어!

PAT, PMT, PCR 그리고 먹싱(Muxing)

하나의 MPEG-TS에는 하나 이상의 프로그램이 들어갈 수 있으며, 각 프로그램은 하나 이상의 오디오나 비디오 데이터 스트림으로 구성될 수 있다. 따라서 수신 측에서는 MPEG-TS에 어떤 프로그램이 들어 있는지, 각 프로그램이 어느 오디오와 비디오 스트림으로 구성되어 있는지 알아야 하며, 이러한 구성 정보는 PATPMT에 기록된다.

PAT에는 MPEG-TS에 포함된 프로그램 번호와 각 프로그램의 PMT를 찾기 위한 PID가 기록된다. 수신 장치는 PAT를 먼저 해석한 뒤 해당 PID를 따라가 각 프로그램의 PMT를 찾는다.

PMT에는 해당 프로그램을 구성하는 비디오, 오디오와 부가 데이터 스트림의 종류 및 PID가 기록된다. 예를 들어 하나의 프로그램이 비디오 PID 하나, 한국어 오디오 PID 하나와 영어 오디오 PID 하나로 구성되어 있다면, PMT에는 이들 스트림의 종류와 PID가 각각 정의된다. 수신 장치는 이 정보를 이용해 필요한 비디오와 오디오 스트림을 선택한다.

서로 독립적으로 전달되는 비디오와 오디오를 정확한 시점에 재생하려면 시간 기준도 필요하다. MPEG-TS에서는 PCR을 이용해 수신 측의 기준 시계를 복원하고, 각 스트림에 포함된 PTS를 기준으로 실제 재생 시점을 결정한다. PCR이나 PTS가 맞지 않으면 재생이 불안정해진다.

오디오와 비디오 데이터 스트림은 각각 별도의 PID로 구분되므로, 필요한 스트림만 선택해 새로운 MPEG-TS를 구성할 수 있다. 예를 들어 하나의 비디오 스트림과 한국어 오디오 스트림을 선택한 뒤 PAT, PMT와 시간 정보를 다시 작성하면 한국어 음성이 포함된 영상 스트림을 만들 수 있다. 같은 비디오 스트림에 영어 오디오 스트림을 조합하면 영어 음성이 포함된 별도의 영상 스트림도 구성할 수 있다.

이처럼 여러 데이터 스트림을 선택하고 하나의 전송 스트림으로 결합하는 작업을 먹싱(Muxing) 또는 리먹싱(Remuxing)이라고 하며, 이러한 작업을 수행하는 장비나 기능을 먹스(MUX, Multiplexer)라고 부른다. 먹싱 과정에서는 단순히 데이터를 한데 모으는 것뿐 아니라 각 스트림에 PID를 부여하고 PAT와 PMT를 구성하며, 필요한 경우 PCR과 타임스탬프를 다시 정리한다.

인코딩, 디코딩, 그리고 코덱

영상 신호는 그 크기가 매우 크다. 흔히 HD-SDI라고 부르는 방송용 무압축 신호 포맷인 SMPTE 292 신호의 경우, 약 1.5Gbps의 대역폭을 가진다. 이는 일반적인 네트워크에서 감당하기에 버거운 대역폭이며, 그 신호의 특성 또한 네트워크를 통해 전송하기에 적합하지 않다. 따라서 전송이 가능한 수준으로 대역폭을 조절하고, 전송에 적합한 형태로 신호를 변경해 주어야 한다. 이 작업을 인코딩(Encoding)이라고 한다.

인코딩에는 여러 가지 방법이 있으며, 각각의 방법에 따라 다양한 특징을 가지게 된다. 때문에 사용하려는 환경에 따라 가장 적합한 방법을 사용해 인코딩하게 된다. 이렇게 인코딩에 사용되는 특정한 방법들을 코덱(Codec)이라 한다.

코덱을 통해 인코딩된 신호는 재생이 필요한 곳으로 전송된 후, 반대의 과정을 거쳐 원래의 신호로 만들어져야 한다. 쉽게 말해 인코딩된 동영상 스트림을 입력받아 다시 원래의 그림을 그리게 된다. 이렇게 인코딩과 반대의 개념으로, 전송된 신호를 바탕으로 원래의 신호를 만들어 내는 과정을 디코딩(Decoding)이라고 한다.

인코딩을 수행하는 장치나 프로그램을 인코더(Encoder), 디코딩을 수행하는 장치나 프로그램을 디코더(Decoder)라고 한다. 인코더와 디코더는 동일한 코덱 규격을 이해해야 하며, 수신 장치가 해당 코덱을 지원하지 않으면 스트림을 정상적으로 재생할 수 없다.

여기서 기억해야 할 점은 오디오와 비디오는 서로 독립된 데이터 스트림이며 각각 다른 코덱을 사용한다는 것이다. 예를 들어 하나의 영상 스트림 안에서 비디오는 H.264로 인코딩하고 오디오는 AAC로 인코딩할 수 있다. 이후 먹싱 과정을 거치면 각각의 비디오와 오디오 데이터가 하나의 MPEG-TS나 MP4와 같은 컨테이너 안에 함께 구성된다.

와우자에서 사용 가능한 코덱의 종류

위에서 말했듯, 코덱에는 여러 가지 종류가 있다. 그중 와우자의 트랜스코더에서 사용 가능한 비디오 코덱과 오디오 코덱은 다음과 같다. 일부 코덱은 디코딩만 지원하거나 인코딩만 지원하기도 한다.

비디오 코덱
H.264
MPEG-4 Part 2
HEVC/H.265
MPEG-2
VP8
VP9
H.263v2
오디오 코덱
AAC
G.711
MPEG-1 Layer 1/2/3
Speex
Vorbis
Opus

업계에서 사실상의 표준(de facto standard)으로 사용되는 코덱은 H.264와 AAC이며, 모두 와우자에서 디코딩과 인코딩을 지원하는 코덱이다.

이상으로 스트림의 구조와 먹싱의 개념, 인코딩·디코딩 및 코덱의 역할을 간단히 살펴보았다. 이제 이러한 내용을 바탕으로 스트림의 어떤 요소를 변경하는지에 따라 트랜스코드, 트랜스레이트와 트랜스먹스를 구분하고 각각의 개념을 정의할 수 있다.

트랜스코드(Transcode)란 무엇인가?

트랜스코드(Transcode)는 건너가다라는 뜻의 라틴어 접두사 trans-codec을 합친 단어로, 코덱을 변환하는 것을 의미한다. 와우자에서 트랜스코드라 하면, 보통 입력된 콘텐츠에 사용된 코덱을 클라이언트 측 호환성을 위해 H.264 비디오 코덱과 AAC 오디오 코덱으로 변환하는 것을 의미한다.

트랜스코딩 과정에서는 비디오와 오디오를 각각 독립적으로 처리할 수 있다. 비디오 코덱만 변환하고 오디오는 그대로 유지할 수도 있으며, 반대의 경우나 필요하다면 비디오와 오디오를 모두 새로운 형식으로 변환할 수도 있다.

입력과 출력이 동일한 코덱을 사용하는 경우에도 트랜스코딩이 필요할 수 있다. 예를 들어 입력과 출력이 모두 H.264라 하더라도 해상도, 프레임레이트, 프로파일, 레벨 등이 다르면 입력 비디오를 디코딩한 뒤 새로운 설정으로 다시 인코딩해야 한다. 따라서 트랜스코드는 단순히 코덱의 종류가 달라지는 경우에만 한정되지 않는다.

이 개념은 와우자에서뿐만 아니라 미디어 산업 전반에서 여러 가지 변환 작업을 넓게 일컫는 개념이기도 한데, 실제 업계에서는 아래에 설명할 트랜스레이트 역시 트랜스코드라 부른다. 예를 들어,

H.264를 HEVC로 트랜스코딩한다.
UHD 콘텐츠를 SD급으로 트랜스코딩한다.

와 같이 사용하는 식이다. 본 필자는 트랜스코드에 대해 설명할 때 다음과 같은 표현을 자주 사용한다.

트랜스코드는 그림 한 장을 보고 다시 그리는 거다.
EQMaker

트랜스레이트(Transrate)란 무엇인가?

트랜스레이트(Transrate)는 코덱의 변경 없이 전송에 필요한 비트레이트를 변경하는 것을 의미한다.

이는 HLS나 MPEG-DASH와 같은 적응형 비트레이트(ABR, adaptive bitrate streaming) 개념의 등장과 함께 사용되기 시작한 개념이다.

적응형 비트레이트 스트리밍(ABR)은 동일한 콘텐츠를 여러 품질 단계로 준비하고, 재생 중인 클라이언트가 네트워크 대역폭과 버퍼 상태에 따라 적절한 스트림으로 전환하는 방식이다. 네트워크 상태가 나빠지면 낮은 비트레이트의 스트림으로 전환하고, 상태가 좋아지면 더 높은 품질의 스트림을 선택함으로써 재생 중단을 줄일 수 있다.

트랜스레이트는 입력 스트림 하나의 비트레이트를 단순히 변경하는 작업뿐 아니라, 하나의 원본 스트림에서 여러 품질의 출력 스트림을 동시에 생성하는 작업을 포함할 수 있다. 예를 들어 8Mbps의 H.264 원본 스트림으로부터 6Mbps, 3Mbps와 1Mbps의 H.264 출력 스트림을 만드는 방식이다.

엄밀히 말하면, 트랜스레이트는 입력받는 스트림의 비트레이트를 조절하거나, 하나의 원본 스트림에서 여러 품질의 비트레이트를 추가로 생성하는 것을 의미한다. 하지만 해상도 또는 비트레이트를 변환한다는 관점에서 트랜스코드 개념과 겹치기 때문에, 현장에서는 트랜스코드와 혼용되어 사용되는 경우도 있다.

사실, 본 필자도 거의 사용하지 않는 표현이지만 필자가 설명할 때는 다음과 같은 표현을 자주 사용한다.

트랜스레이트는 그림 한 장을 보고 작은 그림을 여러 장 그리는 거다.
EQMaker

트랜스먹스(Transmux)란 무엇인가?

미디어 산업에서 멀티플렉서(Multiplexer, 이하 먹스)는 서로 독립된 비디오, 오디오와 부가 데이터 스트림을 하나로 묶어 하나의 전송 스트림이나 컨테이너를 구성하는 장비 또는 기능을 의미한다. 앞서 설명한 트랜스코드와 트랜스레이트가 비디오와 오디오 데이터를 다시 인코딩하는 작업이라면, 트랜스먹스(Transmux)는 코덱은 유지하면서 스트림의 구성이나 이를 담는 컨테이너 또는 전송 형식을 변경하는 작업을 의미한다.

예를 들어 베이스밴드 신호를 입력받는 실시간 인코더가 H.264 비디오 코덱과 HE-AAC 오디오 코덱을 사용해 신호를 인코딩한 뒤, MPEG-2 TS 기반의 UDP 멀티캐스트 형태로 출력한다고 가정해 보자. 멀티캐스트는 제한된 내부 네트워크에서 스트림을 배포할 때에는 유용하지만, 일반적인 퍼블릭 인터넷을 통해 시청자에게 직접 전달하기에는 적합하지 않다. 따라서 외부 서비스 환경에 맞도록 HLS나 RTMP와 같은 다른 전송 형식으로 변경할 필요가 있다.

이때 전송할 비디오와 오디오는 이미 서비스에 적합한 코덱으로 인코딩되어 있다. 따라서 수신한 비디오와 오디오 데이터를 다시 인코딩할 필요 없이, 기존 데이터 스트림을 HLS나 RTMP의 구조에 맞게 재배치하고 필요한 제어 정보와 컨테이너 구성을 새로 작성하면 된다.

이처럼 코덱의 변경 없이 스트림 조합이나 전송 형식만 바꾸는 작업을 트랜스먹싱(Transmuxing) 또는 재패키징(Repackaging)이라고 한다. 인코딩 과정을 생략해 서버의 연산 자원 사용량이 적고, 추가되는 지연 시간과 화질 손실도 줄일 수 있다.

실제 현장에서는 트랜스먹스라는 표현보다 먹싱이나 리먹싱이라는 표현을 더 자주 사용하며, 이 개념에 대해 본 필자는 다음과 같이 표현하곤 한다.

트랜스먹스는 그림의 이름표를 다시 붙이거나 박스 포장을 다시 하는 거다.
EQMaker

실제 현장과의 용어 차이

트랜스코드, 트랜스레이트와 트랜스먹스는 와우자에서 공식적으로 사용하는 용어이다. 그러나 실제 현장에서는 트랜스코드를 제외한 나머지 표현을 사용할 일이 많지 않으며, 사용하더라도 상대방이 그 의미를 정확히 알아먹지 못하는 경우가 많다.

그럼에도 장비의 기능과 동작 방식을 정확히 파악하려면 제조사가 사용하는 용어를 이해할 필요가 있다. 제품에 사용된 용어에는 해당 장비의 설계 방향과 기능 구분 방식이 그대로 반영되어 있기 때문이다. 또한 기술 지원을 요청하거나 공식 문서를 확인할 때에도 제조사의 용어를 알고 있으면 의사소통이 훨씬 수월해진다.

때문에 본 글에서는 와우자가 사용하는 공식 용어에 실제 현장에서 통용되는 표현과 사례를 함께 섞어 설명했다. 전통적인 방송 기술 분야와 OTT로 대표되는 IT 기반 미디어 분야는 앞으로 더욱 긴밀하게 융합될 것이며, 두 영역에서 사용하던 용어 역시 점차 정리될 가능성이 있다.

다만 그 과정이 완전히 이루어지기 전까지는 양쪽 분야의 기술적 배경을 함께 이해하고, 같은 작업을 서로 다른 용어로 표현할 수 있다는 점을 받아들일 필요가 있다. 단순히 단어를 외우는 것보다 각 용어가 어떤 처리 과정을 가리키고, 어떤 맥락에서 사용되는지를 이해하는 것이 더 중요하다. 본 필자가 죽기 전에는 어려울 것 같지만···

FAQ

트랜스레이트(Transrate)란 무엇인가?
와우자 스트리밍 엔진에서 트랜스레이트는 코덱의 종류는 유지하면서 출력 비트레이트를 변경하는 작업이다. 하나의 원본 스트림에서 여러 비트레이트와 품질의 출력 스트림을 생성해 적응형 비트레이트 스트리밍에 활용할 수 있다.
트랜스먹스(Transmux) 또는 재패키징(Repackaging)이란 무엇인가?
와우자 스트리밍 엔진에서 트랜스먹스는 비디오와 오디오 코덱은 유지하면서 스트림의 구성, 컨테이너 또는 전송 형식을 변경하는 작업이다. 예를 들어 MPEG-TS 기반 UDP 멀티캐스트 입력을 HLS나 RTMP 형식으로 변경하는 작업이 이에 해당한다.
스트림 또는 동영상을 게시(Publish)한다는 것은 무엇인가?
오리진(Origin)에 동영상 주소를 생성하고 주소를 활성화하는 것으로, 스트림이나 동영상을 게시한다는 것은 콘텐츠의 주소를 클라이언트 측 플레이어에 입력해 요청하고 재생할 수 있는 상태로 만드는 것을 의미한다.
오리진(Origin)이란 무엇인가?
오리진은 어떤 스트림의 최초 스트리밍 지점이다. 와우자 스트리밍 엔진은 입력 스트림을 수신하고 HLS, RTMP 등의 형식으로 제공하는 오리진 서버 역할을 수행할 수 있다.
와우자 스트리밍 엔진의 핵심 역할은 무엇인가?
와우자 스트리밍 엔진은 크게 오리진 서버와 트랜스코더 역할을 수행한다. 오리진 서버는 콘텐츠 파일이나 입력 스트림을 네트워크를 통해 전달하고, 트랜스코더는 입력받은 비디오와 오디오를 다른 코덱이나 품질로 변환한다.
인코딩(Encoding)이란 무엇인가?
인코딩은 원본 비디오와 오디오 신호를 전송이나 저장에 적합하도록 압축하거나 다른 형식으로 변환하는 작업이다. 인코딩 방식에 따라 화질, 비트레이트, 지연 시간과 호환성이 달라질 수 있다.
코덱(Codec)이란 무엇인가?
코덱은 오디오나 비디오 데이터를 압축하고 복원할 때 사용하는 규칙과 처리 방식을 말한다. 대표적인 비디오 코덱에는 H.264와 HEVC/H.265가 있고, 오디오 코덱에는 AAC와 Opus 등이 있다.
디코딩(Decoding)이란 무엇인가?
디코딩은 인코딩된 비디오와 오디오 데이터를 해석해 사람이 보고 들을 수 있는 신호로 복원하는 작업이다. 재생 장치가 해당 코덱을 지원하지 않으면 정상적으로 디코딩할 수 없다.
먹싱(Muxing)이란 무엇인가?
먹싱은 서로 독립된 비디오, 오디오와 부가 데이터 스트림을 하나의 전송 스트림이나 컨테이너로 묶는 작업이다. MPEG-TS에서는 각 스트림에 PID를 부여하고 PAT와 PMT 등의 구성 정보를 함께 작성한다.
와우자에서 사용할 수 있는 비디오 코덱은 무엇인가?
와우자 트랜스코더에서는 H.264, MPEG-4 Part 2, HEVC/H.265, MPEG-2, VP8, VP9와 H.263v2를 사용할 수 있다. 다만 코덱에 따라 디코딩만 지원하거나 인코딩만 지원할 수 있으므로 입력과 출력 방향의 지원 범위를 각각 확인해야 한다.
와우자에서 사용할 수 있는 오디오 코덱은 무엇인가?
와우자 트랜스코더에서는 AAC, G.711, MPEG-1 Layer 1/2/3, Speex, Vorbis와 Opus를 사용할 수 있다. 이 역시 코덱에 따라 디코딩과 인코딩 지원 범위가 다를 수 있다.
트랜스코드(Transcode)란 무엇인가?
트랜스코드는 이미 인코딩된 비디오나 오디오를 디코딩한 뒤, 다른 코덱이나 다른 설정으로 다시 인코딩하는 작업이다. 코덱이 같더라도 해상도, 프레임레이트, 프로파일, 레벨 또는 비트레이트를 변경하면 트랜스코딩에 해당할 수 있다.

갱신 내역

  • 최초 게시
  • 1차 수정
  • 2차 수정 및 이전