와우자 스트리밍 엔진 트랜스코더의 구조와 기본 동작 방법

와우자 스트리밍 엔진 트랜스코더의 기능과 사용방법, 설정 프리셋과 템플릿 구성에 따른 트랜스코더의 동작방식, 라이선스 제한에 대해 살펴본다.

와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)의 대표적인 기능은 크게 둘로 나뉘는데, 하나는 네트워크를 통해 콘텐츠를 배포하는 오리진(Origin)과, 나머지 하나는 본 글에서 살펴볼 트랜스코더(Transcoder)이다.

본 글은 와우자 트랜스코더의 기능과, 설정을 구성하는 템플릿과 프리셋의 개념 및, 구성에 따른 트랜스코더의 동작 방식을 설명한다. 이를 통해 트랜스코더 설정에 필요한 개념을 잡는데 도움이 되고자 한다.

와우자 스트리밍 엔진의 트랜스코더란?

와우자에서는 트랜스코더의 기능을 트랜스코딩(transcoding)과 트랜스레이팅(transrating)으로 구분하고 있으며, 각각의 정의는 아래와 같다.

트랜스코딩(transcoding)
소스의 코덱을 변경하는 것
트랜스레이팅(transrating)
비트레이트를 변경하고 키프레임을 정렬하는 것

사실, 저 두가지 정의는 기술적으로 상당히 광범위한 개념을 담고 있는 동시에, 사실 같은 동작을 의미한다. 고로 본 필자는 독자제위께서 트랜스코딩이니 트랜스레이팅이니 굳이 복잡하게 구분할 필요 없이, 그냥 이렇게 기억해 두셔도 무방하리라 생각한다.

뭐가 됐든,
그림을 다시 그리기 위해 CPU/GPU 연산이 필요하면
트랜스코딩이다.

이를 바탕으로 트랜스코딩에 대해 생각해 보면, 트랜스코더는 아래와 같은 작업들을 수행하는 놈이라 생각할 수 있겠다.

  • 출력 스트림을 여러 비트레이트로 만들거나 : 서로 다른 화질의 그림을 그려야 함
  • 입력되는 코덱을 변경하거나 : 다른 방법을 이용해 그림을 새로 그려야 함
  • 로고등의 자막을 삽입하거나 : 자막이 포함된 새로운 그림을 그려야 함

요약하자면, 와우자 트랜스코더는 입력된 영상을 다양한 목적에 맞게 실시간으로 변환해주는 기능이다.

와우자 트랜스코더 라이선스 제한

와우자 트랜스코더는 다른기능과 달리, 기본으로 제공되는 라이선스의 수가 제한되어 있다. 사용하는 라이선스에 따라 제공되는 양이 달라질 수 있지만, 기본적으로 하나의 인스턴스당 10개의 입력까지 사용할 수 있으며, 이상의 경우 별도의 비용이 발생한다.

때문에, 외부의 소스가 와우자에 접속(외부에서 RTMP PUSH로 연동되는)하는 구조라면 최대 접속 가능한 수에 제한을 두거나, 방화벽 또는 사용자 인증등을 통해 불필요한 트랜스코딩 프로세스를 제한시켜 주어야 한다. 굳이 라이선스때문이 아니더라도 트랜스코딩은 시스템의 자원을 많이 소모하는 작업이다. 시스템의 Safety-margin(안정성 여유)를 위해서라도 트랜스코딩 작업에 대한 권한을 잘 관리해 줄 필요가 있다.

와우자 트랜스코더 활성화

일단, 와우자 트랜스코더 활성화부터 시켜보도록 하자. 와우자 웹 UI에 접속해서 트랜스코더를 활성화할 어플리케이션을 선택하고, 좌측 메뉴에서 Transcoder를 선택해 트랜스코더 메뉴로 진입하면 현재 상태가 표시된다.

와우자 스트리밍 엔진의 트랜스코더 설정 화면 Not Enabled 상태.
Enable Transcoder버튼을 클릭하고 어플리케이션을 재시작 하면 Status가 초록색 Enabled로 변경된다.

와우자 트랜스코더의 기본 동작과 설정

와우자 트랜스코더의 동작과 설정은 트랜스코더의 상세한 동작을 지정하는 프리셋(Preset)과, 입력받는 소스 스트림에 어떤 프리셋을 적용할지 결정하는 템플릿(Template)의 조합으로 이루어진다. 이를 그림으로 표현하면 아래와 같은 구조가 된다.

와우자 트랜스코더의 프리셋과 템플릿 구조
각각의 프리셋은 프리셋 설정에 따라 각각의 스트림을 출력한다. 즉, 템플릿이 가지고 있는 활성 프리셋의 수가 템플릿이 출력하는 스트림의 수가 된다.

와우자 트랜스코더의 템플릿

와우자 트랜스코더의 UI. 활성화 되어 있으며, 템플릿 경로, 트랜스코더 옵션, 템플릿 목록이 표시되어 있다.

와우자 트랜스코더의 UI에 접속해 보면 템플릿(Template)이라는 표현이 많이 등장하는 것을 볼 수 있다. 위에서 말한바와 같이 템플릿은 프리셋을 묶는 단위로, 와우자 엔진은 입력 스트림의 이름(stream name)과 템플릿의 이름을 기준으로 스트림에 적용시킬 템플릿을 결정한다.

기본 템플릿 (Fallback Template)

기본 템플릿 (Fallback Template)은 소스 스트림에 적용할 템플릿이 별도로 지정되어 있지 않을경우, 기본으로 적용되는 템플릿이다. 기본값은 Transrate템플릿으로 설정되어 있다.

와우자 트랜스코더의 기본 Transrate 템플릿의 프리셋 목록 source, 360p, 160p가 활성화 되어 있다.

Transcoder Templates항목에 있는 Transrate (Default)항목을 클릭해 보면 위와 같이 템플릿에 설정된 프리셋의 목록을 확인할 수 있다. 기본값으로 여러 이름의 프리셋들이 설정되어 있으며 그중, source, 360p, 160p항목이 Enabled되어 있는것을 확인할 수 있다.

Incoming Streams에서 확인한 트랜스코드 스트림 목록. MD.stream_160p, MD.stream_360p, MD.stream_source 가 생성되었다.

이 상황에서 어플리케이션이 스트림 입력을 받게 되면 트랜스코더의 기본 템플릿이 적용된다. 스트림 파일을 생성하고 스트림을 입력시킨 다음, 어플리케이션의 Incoming Streams메뉴를 클릭하면, 위와 같이 입력 스트림 MD.stream외에 기본 템플릿에 있는 3개의 프리셋을 통해 트랜스코딩된 3개의 스트림이 추가된 것을 볼 수 있다. 해당 스트림을 vlc등을 이용해 재생해 보면 트랜스코더에서 출력되는 스트림을 확인할 수 있다. (그리고 서버 모니터 메뉴에서 쭉 뻗어 올라간 CPU 사용률도 볼 수 있다.)

기본 템플릿의 변경

기본 템플릿은 와우자 UI에서 쉽게 수정할 수 있다. 위에서 봤던 어플리케이션의 Transcoder메뉴에서, Edit버튼을 클릭하면 트랜스코더의 기본 설정 메뉴로 진입하게 된다.

와우자 트랜스코더 메뉴에서 기본 폴백 템플릿을 설정하는 모습.

Fallback Template아래에 있는 리스트를 클릭하면 사용할 수 있는 트랜스코더 템플릿 목록이 표시된다. 여기에서 원하는 템플릿을 선택하면 해당 템플릿이 기본 템플릿으로 설정된다.

사용자 템플릿의 추가

대부분의 경우 기본 템플릿과 기본 템플릿의 기본 프리셋을 수정하는 것만으로도 트랜스코더 설정을 완료할 수 있으나, 좀 더 세분화된 구성이 필요할 경우 사용자 템플릿을 추가해야 한다. 사용자 템플릿을 추가하면 입력 스트림 별로 서로다른 트랜스코딩 템플릿을 적용하는 등의 구성이 가능해 진다.

와우자 트랜스코더의 프리셋

와우자 트랜스코더의 프리셋(Preset)은 트랜스코딩 옵션을 의미한다. 즉, 화면의 크기를 변경한다던가 코덱을 변경한다던가 하는 실제적인 트랜스코더의 동작 설정이 프리셋에 기록되어 관리된다.

위의 ‘기본 템플릿’ 항목에서 볼 수 있듯, 트랜스코더 템플릿을 선택하면 템플릿을 구성하는 프리셋 목록을 확인할 수 있다. 프리셋 이름을 클릭하면 해당 프리셋의 설정이 출력되며, 기본적으로 설정할 수 있는 항목들은 아래의 항목과 같다.

와우자 트랜스코더의 프리셋 설정 화면
  • 프리셋 활성화 여부
  • 적용할 코덱과 비트레이트
  • 하드웨어 가속 사용 여부
  • 화면 해상도와 GOP
  • 이미지삽입

마무리

동영상 포맷에 대한 기본적인 이해가 있는 독자 제위라면 본 글만으로도 와우자 트랜스코더를 원하는대로 구성할 수 있으리라 생각한다. 기본 템플릿의 프리셋을 조금만 수정하면 되기 때문이다. 프리셋 설정의 세부적인 사항과 사용자 템플릿을 추가해 적용하는 방법에 대해서는 이어지는 본 저자의 다른 글들을 참고하기 바란다.

요약 및 FAQ

트랜스코더를 사용하는 이유는?
가장 흔한 이유는 비트레이트 변환이며, 소스 콘텐츠의 포맷차이를 없에 클라이언트의 재생이슈를 방지할 수 있다.
와우자 트랜스코더의 채널 수 제한은?
기본적으로 하나의 인스턴스당 10개이 입력 스트림(채널)을 허용한다.
트랜스코더의 접속을 제한해야 하는 이유는?
제한된 라이선스를 효과적으로 사용해야 하기 때문이며, 트랜스코딩 프로세스는 시스템자원을 많이 사용하는 작업으로 시스템 안정성을 확보하기 위함이다.
와우자 트랜스코더의 프리셋이란?
사용 코덱, 해상도, 비트레이트 등 실제 트랜스코더가 동작하는 방식을 관리하는 단위로, 프리셋당 하나의 스트림 출력이 생성된다.
와우자 트랜스코더의 템플릿이란?
템플릿은 프리셋의 집합으로, 입력되는 스트림이 어떤 프리셋을 사용해야 하는지 정의하기 위해 사용된다.
출력되는 스트림 이름은 변경이 불가능한가?
프리셋 설정에서 지정이 가능하다. 별 문제가 없다면 중복을 막기 위해 기본값을 사용할 것을 권한다.
와우자 트랜스코더로 할 수 있는 작업은?
오디오 및 비디오 코덱과 포맷의 변경, 비트레이트와 해상도의 변경, 그래픽 이미지 삽입, crop(화면 일부분을 자르는 것)등의 작업이 가능하다.
와우자 트랜스코더와 외부 트랜스코더중 어느것이 더 효과적인가?
예산의 제한이 없다면 분리해 운영하는 것이 효율적이다. 하지만 기능면에서 와우자 트랜스코더도 다양한 시나리오에 대응할 수 있는 기능을 탑재하고 있다.

1998년 라이브 음향 엔지니어로 시작해 2005년부터 방송 송출 및 미디어 전송 엔지니어의 삶을 살아가고 있습니다. 아날로그 제작 시스템부터 최신 IP 미디어 라스트마일 환경까지, 미디어 기술과 정보 통신 기술(ICT)의 융합을 통해 새로운 솔루션을 제안하고 실현시켜 왔습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Post comment