무중단 라이브 스트리밍을 위한 필러 자동 절체 : 와우자 ModuleLoopUntilLive 모듈 사용 방법
라이브 스트림 중단시 필러(Filler) 자동 절체로, 끊김 없는 연속성과 안정성을 확보해 서비스 채널 완성도를 높이는 Wowza Streaming Engine ModuleLoopUntilLive 확장 모듈 사용 방법

필러 콘텐츠(Filler Content)가 필요한 이유
필러 콘텐츠란?
방송 채널을 운영하는 중에는 방송 편성상 필연적으로 남는 시간이 발생한다. 예를 들어, 저녁 8시에 방영된 드라마가 끝난 후, 9시 정각에 뉴스가 시작되기까지 시간이 비게 된다. 이와 같은 프로그램과 프로그램 사이에 발생하는 공백 시간 동안에도, 시청자들에게 뭔가를 보여주어야 한다. 그래야 다음 프로그램이 시작할 때까지 시청자들을 붙들어 놓을 수 있다.
이를 위해 같은 전환 구간의 공백을 자연스럽게 연결해 주는 콘텐츠가 필요한데, 이러한 용도로 사용되는 것을 필러 콘텐츠(Filler Content, 이하 필러)라 한다. 필러는 그 이름에서 유추할 수 있듯이 스케줄 사이의 공백을 메우는 보조 콘텐츠로, 프로그램 예고, 공익 광고, 자연 풍경, 뮤직비디오 등이 자주 사용된다.
라이브 스트리밍 채널에도 필러가 필요한 이유
이 개념은 전통적인 정규 방송채널 뿐만 아니라, 라이브 스트리밍 채널에도 동일하게 적용된다. 오히려 필러의 필요성은 정규 방송채널보다 라이브 스트리밍 채널이 더 크다. 그 이유는 다음과 같다.
- 예기치 못한 송출 중단
네트워크 불안정이나 기술적 오류로 인해 스트림이 끊기는 상황이 발생할 수 있다. 이러한 때에 필러로 절체(Change over)하면 방송 자체가 종료되지 않고 시청자의 이탈을 방지할 수 있다. - 시작 전 대기 공간 제공
스트리밍이 정해진 시각에 시작될 경우, 필러 콘텐츠는 시작 전까지 시청자들이 미리 접속해 대기할 수 있도록 해 준다. 이는 단순한 대기를 넘어, 시청자의 이탈을 줄이고 기대감을 높일 수 있다. - 플랫폼 노출을 위한 스트림 유지
유튜브와 같은 OTT 플랫폼에서는 스트림의 지속 시간이 영상 노출이나 추천 알고리즘에 영향을 미친다. 방송 사이에 필러를 활용하면 콘텐츠가 끊기지 않고 이어지므로, 전체 스트림 시간이 유지되어 채널의 노출과 인기도에 긍정적인 효과를 가져온다.
와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)은 이러한 기능을 구현하는 ModuleLoopUntilLive 확장 모듈을 제공한다. 이 모듈은 라이브 스트림이 없을 때는 필러용 스트림으로, 라이브 스트림이 있을 경우에는 라이브 스트림으로, 출력 스트림을 자동으로 절체하는 기능을 제공한다.
ModuleLoopUntilLive 모듈 설치 및 설정
ModuleLoopUntilLive 모듈은 StreamPublisher
모듈과 함께 설치된다. 본 글에서는 StreamPublisher
와 ModuleLoopUntilLive
를 하나의 어플리케이션에서 실행, 필러용 스트림을 생성해 사용하겠다. 사전에 StreamPublisher
모듈의 설정이 완료되어 있어야 한다.
- 와우자 스트리밍 엔진 확장 모듈 목록에서
StreamPublisher
을 찾아 모듈 파일을 다운로드 받는다. - 와우자 스트리밍 엔진 확장 모듈 설치 방법을 참고하여 jar 파일을 설치한다.
- 와우자 엔진 확장 모듈 사용 방법과 예를 참고해, 적용할 어플리케이션의 설정 파일인
Application.xml
의 Module섹션에 아래 내용을 등록해 준다.모듈 등록 정보 Name Description Fully Qualified Class Name ModuleLoopUntilLive 필러 자동 절체 com.wowza.wms.plugin.streampublisher.ModuleLoopUntilLive <Module> <Name>ModuleLoopUntilLive</Name> <Description>필러 자동 절체</Description> <Class>com.wowza.wms.plugin.streampublisher.ModuleLoopUntilLive</Class> </Module>
- 와우자 엔진 서비스를 재시작해 준다. (어플리케이션만 재시작해 주면 모듈 적재가 되지 않는다.)
사용할 어플리케이션에 모듈 적용
필러 재생 목록 파일 생성
필러용으로 사용할 콘텐츠 파일을 지정하기 위해 재생 목록 파일(.smil)을 생성한다. 생성방법은 StreamPublisher
모듈의 설정 방법을 참고하기 바란다.
<smil>
<head></head>
<body>
<stream name="SwitchOvered"></stream>
<playlist name="pl1" playOnStream="SwitchOvered" repeat="true" scheduled="2025-04-22 13:55:00">
<video src="mp4:MohonMaaf2160p30f.mp4" start="0" length="-1"/>
</playlist>
</body>
</smil>
stream name="SwitchOvered
: 여기에서 지정된 스트림 네임이 실제 서비스 출력의 스트림 네임이 된다.mp4:MohonMaaf2160p30f.mp4
: 필러로 사용할 콘텐츠 파일명과 프리픽스
모듈 속성 추가
와우자 속성 추가 방법 글을 참고해, 설치된 ModuleLoopUntilLive
를 적용할 와우자 어플리케이션에 아래 속성을 추가시켜 준다.
Path | Name | Type | Value |
---|---|---|---|
/Root/Application |
loopUntilLiveSourceStreams |
Str | 입력을 감시할 라이브 스트림의 이름 |
/Root/Application |
loopUntilLiveOutputStreams |
Str | 서비스 용으로 출력되는 스트림의 이름, 아래에 설명할 필러 스트림의 이름을 적어준다. |
/Root/Application |
streamPublisherSmilFile |
Str | 필러 스트림 재생 목록(.smil 파일) |
<Property>
<Name>loopUntilLiveSourceStreams</Name>
<Value>LiveEncoderIn.stream</Value> // 입력을 감시할 라이브 인코더의 출력 스트림
<Type>String</Type>
</Property>
<Property>
<Name>loopUntilLiveOutputStreams</Name>
<Value>SwitchOvered</Value> // 재생 목록 파일에서 설정한 서비스 출력 스트림
<Type>String</Type>
</Property>
<Property>
<Name>streamPublisherSmilFile</Name>
<Value>mm.smil</Value> // 필러 재생 목록 파일
<Type>String</Type>
</Property>
위의 필수 속성을 포함해, 추가 옵션으로 사용할 수 있는 속성들의 목록은 와우자 공식 문서를 참고하기 바란다.
속성을 저장한 후, 해당 어플리케이션을 재시작하면 적용된다.
진실의 시간 – 확인 방법
앞서 살펴본 바와 같이, StreamPublisher
와 ModuleLoopUntilLive
는 서로 밀접한 관계를 가진다. 동작 방식을 정리해 보면 다음과 같다.
StreamPublisher
모듈이 재생 목록의 파일을 이용해 스트림을 생성한다.ModuleLoopUntilLive
모듈이 라이브 소스의 상태를 확인한다.
라이브 소스가 활성화되면 재생 목록의 콘텐츠 파일을 라이브 소스로 변경하고 reload 시킨다.
라이브 소스가 중단되면 재생 목록을 다시 파일로 변경하고 reload 시킨다.- 결론은,
StreamPublisher
모듈을 통해 생성되는 라이브 스트림의 소스를ModuleLoopUntilLive
모듈을 통해 제어하는 방식이다.
위의 동작 방식을 바탕으로, 실제 서비스에 사용할 스트림은 재생 목록에서 정의된 SwitchOvered
스트림인 것을 알 수 있다.
VLC와 같은 플레이어를 이용해 SwitchOvered 스트림을 재생하며, 소스 스트림 LiveEncoderIn.stream
를 중단시키면 필러가 송출되는 것을 확인할 수 있다.
마무리
라이브 스트리밍 환경에서 필러 콘텐츠는 단순한 빈 시간 채우기를 넘어 필수적인 요소이다. 채널의 안정성, 사용자 경험, 브랜딩에 기여하는 면이 많기 때문이다. 그리고 와우자 엔진은 StreamPublisher
모듈과 ModuleLoopUntilLive
모듈의 결합을 통해 라이브 스트림과 필러 스트림간의 자동 절체를 쉽게 구현할 수 있다.
이 글이 독자 제위의 라이브 스트림 서비스 품질과 안정성을 개선하는 데 자그마한 도움이 되기를 소망한다.