와우자 스트리밍 엔진의 ModuleAVMix 모듈을 이용하면 서로 다른 라이브 스트림에서 비디오 트랙과 오디오 트랙을 가져와 하나의 새로운 출력 스트림으로 결합할 수 있다. 먹싱과 믹싱의 차이, 모듈 설치와 avMixNames 프로퍼티 설정, 다국어 방송·멀티 앵글·POV 스트리밍 등 활용 시나리오를 함께 설명한다.
ModuleAVMix의 기능
와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)의 확장 모듈 중 하나인 ModuleAVMix 모듈은 서로 다른 라이브 스트림에서 오디오와 비디오를 분리한 다음, 다시 조합해 새로운 스트림으로 만드는 기능을 가지고 있다.
모듈의 이름에서부터 드러나듯이 와우자에서는 이러한 개념을 믹싱(Mixing)이라 부르고 있다. 하지만 이 모듈의 실제 기능은 독립된 오디오 스트림과 비디오 스트림을 결합하는 것으로, 먹싱(Muxing) 또는 리먹싱(Remuxing)이라 불러야 한다.
정확히 말해 믹싱은 A와 B를 더해 C를 만드는 것이고, 먹싱은 A를 B로 교체하거나, A만 있던 것에 B를 추가하는 것이다. 다른 말로는 믹싱은 재인코딩이 필요하고, 먹싱은 인코딩이 필요 없는 것이다.
이러한 동작을 믹싱이라 아주 부르지 않는 것은 아니지만 (그러니까 모듈 제작자도 이름을 이렇게 붙였겠지..) 정확한 구분은 아니다. 때문에 본 글에서는 이 개념을 명확히 하기 위해 모듈의 이름을 언급할 때가 아니라면 믹싱 대신 먹싱 또는 결합이라는 표현을 사용하도록 하겠다.
오디오·비디오 먹싱을 이용한 서비스 예시
서로 다른 라이브 스트림의 오디오와 비디오를 먹싱하면 하나의 원본 콘텐츠를 다양한 형태의 서비스로 확장할 수 있다.
OTT와 라이브 스트리밍 환경에서는 이러한 구조를 OSMU에 활용할 수 있다. 하나의 비디오에 여러 오디오를 조합하거나, 하나의 오디오를 여러 비디오에 적용하면 새로운 콘텐츠를 다시 제작하지 않고도 언어, 시점, 접근성 및 이용 목적에 따라 여러 개의 라이브 스트림을 구성할 수 있다. 이를 통해 원본 콘텐츠의 활용 범위를 넓히고 부가가치를 높일 수 있다.
하나의 비디오에 여러 오디오를 먹싱하는 시나리오
하나의 공통 비디오 스트림에 여러 오디오 스트림을 결합하는 경우, 언어마다 전체 스트림을 별도로 제작하는 것보다 인코딩 자원과 운영 비용을 줄일 수 있다. 특히 비디오 스트림은 오디오 스트림에 비해 인코딩 자원이 많이 필요하기 때문에 시스템 자원을 효과적으로 절약할 수 있다.
- 다국어 동시통역
- 국제 행사, 종교 행사, 기자회견과 스포츠 중계 등에서 하나의 비디오 스트림에 언어별 통역 오디오를 각각 결합해 여러 개의 언어별 라이브 스트림을 생성한다.
- 화면 해설
- 시각장애인을 위한 화면 해설 음성을 원본 비디오와 결합해 별도의 화면 해설용 스트림을 생성한다.
- 일반 중계와 해설 선택형 중계
- 같은 스포츠 경기나 공연 영상에 현장음, 전문 해설, 응원팀별 해설 또는 출연자별 해설 오디오 스트림을 결합해 여러 종류의 스트림을 생성한다.
- 음향 선택형 콘텐츠
- 보컬 중심, 악기 중심, 현장 소리 강조 등 서로 다른 오디오 믹스를 하나의 비디오에 연결해, 시청자가 선호하는 음원을 선택할 수 있게 한다.
- 장르별 음악 스트리밍
- 같은 영상에 팝, 클래식, 재즈 또는 앰비언트 등 서로 다른 음악 장르의 오디오를 결합해 여러 분위기의 라이브 채널을 구성한다.
- 교육·훈련용 음성 교체
- 하나의 교육 영상에 초급자용 설명, 전문가용 설명, 어린이용 설명 또는 시험 대비용 해설을 각각 결합해 학습 수준별 스트림을 제공한다.
여러 비디오에 하나의 오디오 스트림을 적용하는 시나리오
- 360도 VR 및 CCTV
- 어느 한 지점을 여러 각도에서 관찰하거나, 한 지점에서 여러 각도의 방향을 관찰하는 경우, 모든 비디오 스트림에 동일한 오디오를 적용시켜 현실감 있는 서비스를 제공할 수 있다.
- 멀티 앵글 스트리밍
- 다양한 시점(예: 무대 정면, 드러머 카메라, 골키퍼 뷰 등)의 비디오 스트림에 동일한 현장 오디오를 결합하면, 시청자가 원하는 각도의 영상을 선택할 수 있게 된다.
- 온라인 강의
- 여러 시점(정면, 칠판, 클로즈업 등)에서 촬영된 비디오 스트림에 동일한 현장 오디오를 적용해 학습자가 시점을 자유롭게 선택할 수 있게 한다.
- POV 스트리밍
- 여러 플레이어의 시점(POV) 화면이나 게임 내 다양한 관전 화면에 동일한 오디오를 적용해 원하는 선수의 플레이를 선택해 볼 수 있게 한다.
ModuleAVMix 모듈 설치 절차
ModuleAVMix 모듈을 적용하려면 다음 절차에 따라 설치한다. 이 모듈은 서버 전체가 아니라 소스로 사용할 스트림들을 수신하고 있는 어플리케이션의 Application.xml에 등록해 사용한다.
ModuleAVMix 모듈 다운로드와 설치
- 와우자 스트리밍 엔진 확장 모듈 중 하나인
ModuleAVMix모듈을 찾아 다운로드받는다. - 와우자 스트리밍 엔진 확장 모듈 설치 방법을 참고해 다운로드한 압축 파일을 해제하고, 패키지의
JAR파일을 와우자 설치 디렉토리의lib디렉토리에 복사한다. - 와우자 스트리밍 엔진 확장 모듈 적용 방법을 참고해 모듈을 사용할 어플리케이션의
Application.xml의Module섹션에 모듈 정보를 등록해 준다.모듈 등록 정보 Name Description Fully Qualified Class Name ModuleAVMix AV 먹스 com.wowza.wms.plugin.avmix.ModuleAVMix <Module> <Name>ModuleAVMix</Name> <Description>AV 먹스</Description> <Class>com.wowza.wms.plugin.avmix.ModuleAVMix</Class> </Module> - 와우자 서비스를 재시작해 준다. 새로운 JAR 파일을 설치했기 때문에 어플리케이션만 재시작해 주면 모듈 적재가 되지 않는다.
모듈 적용
설치한 모듈을 사용하기 위해서는 관련 프로퍼티를 입력해 주어야 한다. 프로퍼티 입력 방법을 참고하여 모듈을 사용할 어플리케이션에 프로퍼티를 추가해 준다.
| Path | Name | Type | Value |
|---|---|---|---|
| /Root/Application | avMixNames | String | 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는 키-값 형태로 다음과 같이 구성된다.
outputNameModuleAVMix를 통해 생성할 출력 스트림의 이름- 필수 항목으로 반드시 입력해 주어야 한다.
videoName- 비디오 소스로 사용할 스트림 이름
- 없을 경우 출력 스트림은 비디오 없는 스트림으로 생성
audioName- 오디오 소스로 사용할 스트림 이름
- 없을 경우 출력 스트림은 오디오 없는 스트림으로 생성
최종적으로 위 예시에서 사용한 Value 값인 outputName: MUXED, videoName: CamRTSP1, audioName: MusicBox는 CamRTSP1 스트림의 비디오와 MusicBox 스트림의 오디오를 결합해 MUXED라는 새로운 스트림을 생성한다.
위의 필수 속성을 포함해 추가 옵션으로 사용할 수 있는 프로퍼티 목록은 와우자 공식 문서를 참고하기 바란다.
프로퍼티를 저장한 후 해당 어플리케이션을 재시작하면 설정이 적용된다.
마무리
Wowza Streaming Engine의 ModuleAVMix 모듈은 서로 다른 라이브 스트림의 오디오와 비디오를 결합해 새로운 스트림을 생성하고, 다양한 형태의 콘텐츠와 시청 경험을 구현하는 데 유용하게 사용할 수 있는 모듈이다.
특히 ModuleAVMix와 같은 멀티플렉서(Multiplexer) 유형의 기능은 코덱을 변환하거나 영상을 다시 인코딩하지 않고 기존 오디오와 비디오 트랙을 조합할 수 있다. 따라서 스트림 조건이 서로 호환된다면, 별도의 외부 인코더 시스템에서 다시 인코딩하는 방식보다 적은 자원으로 새로운 출력 스트림을 생성할 수 있다.
위에 제시한 시나리오 외에도 이 기능을 응용해 구현할 수 있는 많은 서비스 형태가 있을 것이다. 혹, 기회가 된다면 본 필자에게도 정보를 알려주기 바란다. 이 글이 독자 제위의 고민에 자그마한 도움이 되기를 소망한다.
FAQ
- 먹싱(Muxing)과 믹싱(Mixing)의 차이는 무엇인가?
- 믹싱은 둘 이상의 신호를 섞어 하나의 새로운 신호를 만드는 작업이고, 먹싱은 둘 이상의 신호를 하나의 스트림으로 결합하는 작업이다. 믹싱에는 재인코딩 과정이 필요하지만, 먹싱은 코덱을 변환하지 않고 기존 트랙을 결합한다.
- 서로 다른 두 라이브 스트림의 오디오와 비디오를 결합할 수 있는가?
- 가능하다. 와우자 스트리밍 엔진의
ModuleAVMix모듈을 이용하면 한 라이브 스트림의 비디오 트랙과 다른 라이브 스트림의 오디오 트랙을 결합해 새로운 출력 스트림을 만들 수 있다. - OSMU란 무엇인가?
- 하나의 원천 콘텐츠를 여러 용도로 활용하는 것을 의미한다. 방송·미디어 산업에서는 하나의 콘텐츠를 여러 형태로 재가공해 다양한 플랫폼에 제공하고, 부가 서비스와 파생 콘텐츠를 만들어 원본 콘텐츠의 활용 범위와 부가가치를 높이는 전략을 말한다.
- 와우자 스트리밍 엔진의
ModuleAVMix모듈의 역할은 무엇인가? - 서로 다른 라이브 스트림에서 비디오 트랙과 오디오 트랙을 가져와 하나의 새로운 라이브 스트림으로 결합한다. 예를 들어 카메라 스트림의 비디오와 음악 스트림의 오디오를 결합해 새로운 출력 스트림을 만들 수 있다.
ModuleAVMix는 오디오와 비디오를 다시 인코딩하는가?- 아니다.
ModuleAVMix는 기존 스트림의 오디오와 비디오 트랙을 다시 결합하는 모듈이므로 자체적으로 코덱을 변환하거나 재인코딩하지 않는다. 코덱 변환이 필요하면 별도의 트랜스코딩 과정을 사용해야 한다. - 서로 다른 오디오·비디오 코덱 조합으로 구성된 스트림 소스를 결합할 수 있는가?
- 가능하다. 오디오 코덱과 비디오 코덱은 서로 같은 종류일 필요가 없다. 다만 생성된 출력 스트림을 전달하는 프로토콜과 재생하는 플레이어가 해당 오디오·비디오 코덱의 조합을 모두 지원해야 한다.
ModuleAVMix로 생성할 출력 스트림은 어떻게 설정하는가?avMixNames프로퍼티에 출력 스트림 이름인outputName, 비디오 소스인videoName, 오디오 소스인audioName을 입력한다. 이 가운데outputName은 필수 항목이다.- 하나의
avMixNames프로퍼티로 여러 출력 스트림을 만들 수 있는가? - 가능하다. 각 출력 스트림의 설정을 파이프 문자
|로 구분하면 하나의avMixNames프로퍼티에 여러 결합 구성을 등록할 수 있다. - 스트림 먹싱 기능으로 구현할 수 있는 서비스에는 무엇이 있는가?
- 다국어 동시통역, 화면 해설, 해설 선택형 방송, POV 스트리밍, 멀티 앵글 스트리밍, 온라인 강의, 장르별 음악 스트리밍과 같은 서비스에 적용할 수 있다.
갱신 내역
- — 최초 게시
- — 1차 수정
- — 2차 수정 및 주소 이전