라이브 스트림 오디오 비디오 분리 재조합 : 와우자 스트리밍 엔진 ModuleAVMix 모듈 사용방법

Last modified date

라이브 스트림의 오디오 비디오를 재 조합하여 멀티 앵글, 다국어 음성, 장애인 화면 해설, 다채널 CCTV, 360도 VR 스트리밍등을 구현할 수 있는 Wowza Streaming Engine ModuleAVMix 확장 모듈의 사용방법과 사용 시나리오

A server say hello in different languages with megaphone in front of audience.

라이브 스트림의 오디오와 비디오 스트림을 분리해 다른 스트림과 조합하는 기능은 유연한 콘텐츠 제공을 가능하게 해주고, 접근성과 활용성을 크게 확장시켜, 다양한 사용자 요구에 대응할 수 있는 서비스를 구현하는 유용한 도구가 된다.

본 글에서는 오디오 비디오 믹싱 (먹싱) 를 활용한 서비스의 다양한 예시와, 와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)의 ModuleAVMix 모듈을 통해 이러한 기능을 구현하는 방법을 설명한다.

오디오-비디오 스트림 조합 서비스 예시

하나의 비디오에 여러 오디오 스트림을 적용하는 시나리오

  • 대표적인 예는 다국어 오디오이다. 대규모 이벤트나 종교 예배 등, 여러 국가의 다양한 언어 시청자를 대상으로 진행되는 이벤트의 경우, 하나의 비디오 스트림에 각 언어별 동시통역 오디오 스트림을 결합하면, 각 언어별 라이브 서비스를 생성할 수 있게 된다.
  • 콘서트와 같은 이벤트의 실황 중계의 경우, 시청자가 특정 악기, 보컬 또는 앰비언스(Ambience, 현장음) 등을 선택할 수 있다면, 보다 나은 시청 경험을 제공할 수 있게 된다.
  • 시각장애인을 위한 화면 해설 음성을 비디오 스트림과 결합하면, 시각장애인의 접근성을 고려한 서비스의 운영이 가능해진다.
  • 유튜브 등지에서 인기를 끌고 있는 음악 콘텐츠를 중심으로 한 스트리밍 채널에서도, 하나의 영상에 장르별 오디오 트랙을 조합하여 다양한 플레이리스트 서비스를 제공하는 데 활용될 수 있다.

여러 비디오에 하나의 오디오 스트림을 적용하는 시나리오

  • 360도 전방향 VR 또는 CCTV 환경과 같이, 어느 한 지점을 여러 각도에서 관찰하거나, 한 지점에서 여러 각도의 방향을 관찰하는 경우, 카메라 수만큼 비디오 스트림이 생성된다. 여기에 하나의 고품질 앰비언스 오디오를 각 비디오 스트림에 공통적으로 결합시켜 현실감 있는 서비스를 제공할 수 있다.
  • 콘서트나 스포츠 중계와 같은 이벤트에서도, 다양한 시점(예: 무대 정면, 드러머 카메라, 골키퍼 뷰 등)의 비디오 스트림에 동일한 현장 사운드를 결합하면, 시청자가 원하는 각도의 영상을 선택하면서도 현장감 있는 콘텐츠(멀티 앵글)를 서비스할 수 있게 된다.

ModuleAVMix 모듈 다운로드 및 설치

  1. 와우자 스트리밍 엔진 확장 모듈 목록에서 ModuleAVMix 을 찾아 모듈 파일을 다운로드 받는다.
  2. 와우자 스트리밍 엔진 확장 모듈 설치 방법을 참고하여 jar 파일을 설치한다.
  3. 와우자 엔진 확장 모듈 사용 방법과 예를 참고해, 적용할 어플리케이션의 Application.xmlModule섹션에 아래 내용을 등록해 준다.
    모듈 등록 정보
    Name Description Fully Qualified Class Name
    ModuleAVMix 오디오 비디오 믹스 com.wowza.wms.plugin.avmix.ModuleAVMix
    <Module>
      <Name>ModuleAVMix</Name>
      <Description>오디오 비디오 믹스</Description>
      <Class>com.wowza.wms.plugin.avmix.ModuleAVMix</Class>
    </Module>
  4. 와우자 서비스를 재시작해 준다. (어플리케이션만 재시작 해 주면 모듈 적재가 되지 않음에 주의!)

사용할 어플리케이션에 모듈 적용

와우자 속성 추가 방법글을 참고해, 설치된 ModuleAVMix를 적용할 와우자 어플리케이션에 아래의 속성을 추가시켜 준다.

ModuleAVMix 속성
PathNameTypeValue
/Root/Application avMixNames Str outputName: MUXED, videoName: CamRTSP1, audioName: MusicBox
<Property>
  <Name>avMixNames</Name>
  <Value>outputName: MUXED, videoName: CamRTSP1, audioName: MusicBox</Value>
  <Type>String</Type>
</Property>

avMixNames 의 Value

ModuleAVMix의 핵심 속성인 avMixNames은 키-값 형태로 아래와 같이 구성된다.

outputName
ModuleAVMix 를 통해 생성될 출력 스트림 네임
필수 항목으로 반드시 입력해 주어야 한다.
videoName
비디오 소스로 사용할 스트림 네임.
없을 경우 출력 스트림은 비디오 없는 스트림으로 생성
audioName
오디오 소스로 사용할 스트림 네임.
없을 경우 출력 스트림은 오디오 없는 스트림으로 생성

최종적으로, 위의 예시는 CamRTSP1 스트림의 비디오와 MusicBox 스트림의 오디오를 묶어, MUXED라고 하는 스트림을 생성하게 된다.

위 예시에서는 하나의 스트림만을 생성 했으나, 복수의 스트림 생성도 가능하다. 위의 필수 속성을 포함해, 추가 옵션으로 사용할 수 있는 속성들의 목록은 와우자의 공식 문서를 참고하기 바란다.

속성을 저장한 후, 해당 어플리케이션을 재시작 하면 적용된다.

마무리

Wowza Streaming Engine의 ModuleAVMix모듈은 오디오와 비디오를 결합해 새로운 콘텐츠를 만들고 시청자 경험을 개선하는데 매우 효과적인 기능을 제공한다. 특히 ModuleAVMix같은 멀티플랙서(Multiplexer) 유형의 기능은, 외부의 인코더 시스템을 사용하는 것 보다, 시스템의 자원을 적게 사용한다는 장점이 있다.

위에 제시한 시나리오 외에도 이 기능을 응용해 구현할 수 있는 많은 서비스 형태가 있을 것이다. 혹, 기회가 된다면 본 필자에게도 정보를 알려주기 바란다. 이 글이 독자 제위의 고민에 자그마한 도움이 되기를 소망한다.

Since 2005, He has generated new value by converging traditional broadcasting technology and ICT. From Headend and Frontend to the Last Mile device, He possesses a comprehensive understanding and experience of the entire broadcast system.

답글 남기기

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

Post comment