와우자 스트리밍 엔진의 ModuleLoopUntilLive 모듈을 이용하면 라이브 스트림 입력이 없거나 장애가 발생했을 때 대체 필러 콘텐츠로 자동 절체할 수 있다. 필러 콘텐츠의 정의와 필요성, 비상 필러의 사용 사례, 모듈 설치와 설정 방법부터 실제 절체 동작까지 설명한다.
필러 콘텐츠(Filler Content)가 필요한 이유
필러 콘텐츠란?
방송 채널을 운영하다 보면 편성 과정에서 필연적으로 남는 시간이 발생한다. 예를 들어, 저녁 8시에 편성된 드라마가 45분 동안 방영되고 다음 편성인 뉴스는 저녁 9시 정각에 시작해야 한다면, 두 프로그램 사이에는 방송할 콘텐츠가 없는 15분의 공백 시간이 생긴다.
또한 방송 시스템에 장애가 발생했을 때 검은 화면이나 오류 메시지를 그대로 노출하면, 시청자는 방송이 종료되었거나 채널에 심각한 장애가 발생한 것으로 판단할 수 있다. 따라서 시스템을 복구하는 동안 채널의 송출 상태를 유지하고 시청자의 이탈을 줄이기 위한 대체 화면이 필요하다. 이를 보통 비상 필러라고 부르며, 1999년 5월 발생한 만민중앙교회 MBC 주조정실 점거 사건 당시 남산 중계소에서 송출된 얼룩말 화면이 대표적인 비상 필러 송출의 예이다. (타 지역국 에서는 다른 필러가 송출되기도 했다.)
이처럼 필러 콘텐츠(Filler Content, 이하 필러)란, 이름에서 유추할 수 있듯이 편성과 편성 사이의 빈 시간을 메우는 콘텐츠로, 프로그램 예고, 방송 안내, 공익 광고, 자연 풍경 등이 주로 사용된다.
라이브 스트리밍 채널에도 필러가 필요한 이유
이 개념은 전통적인 TV 채널뿐만 아니라 라이브 스트리밍 채널에도 동일하게 적용된다. 오히려 라이브 스트리밍 채널에서는 필러의 필요성이 더 클 수 있다. 그 이유는 다음과 같다.
- 예기치 못한 송출 중단
네트워크 불안정이나 기술적 오류로 인해 스트림이 끊기는 상황이 발생할 수 있다. 이러한 때에 필러로 절체(Change over)하면 방송 자체가 종료되지 않고 시청자의 이탈을 방지할 수 있다. - 시작 전 대기 공간 제공
라이브 방송이 정해진 시각에 시작될 경우 필러 콘텐츠를 이용하면 시청자가 미리 접속해 같은 재생 화면에서 방송 시작을 기다릴 수 있다. 단순한 정지 화면 대신 프로그램 안내, 예고 영상과 시작 시각 등의 정보를 제공하면 시청자의 이탈을 줄이고 방송에 대한 기대감을 높일 수 있다. - 플랫폼 노출을 위한 스트림 유지
유튜브와 같은 OTT 플랫폼에서는 시청자의 선택, 시청시간, 참여도와 만족도 등이 콘텐츠 추천에 영향을 미친다. 방송 사이 또는 송출이 일시 중단된 시간에도 필러를 활용하면 시청자가 스트림에 머무를 수 있는 시간을 늘리고, 추가적인 시청시간과 참여 기회를 확보할 수 있다.[1] - 스트림과 접속 주소의 연속성 유지
방송과 방송 사이에 송출을 완전히 종료하면 시청자가 다시 접속해야 하거나 플랫폼에서 새로운 라이브 이벤트를 찾아야 할 수 있다. 필러를 이용해 스트림을 유지하면 동일한 재생 주소에서 다음 방송을 계속 제공할 수 있고, 기존 시청자와의 연결도 유지하기 쉽다.
와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)은 필러를 구현하는 ModuleLoopUntilLive 확장 모듈을 제공한다. 이 모듈은 라이브 소스를 사용할 수 없을 때 필러 영상을 반복 재생하고, 라이브 소스가 연결되면 출력 스트림을 해당 라이브 소스로 자동 절체한다. 라이브 소스가 종료되면 다시 필러 영상으로 전환한다.
ModuleLoopUntilLive 모듈 설치 및 설정 방법
ModuleLoopUntilLive 모듈과 StreamPublisher 모듈의 관계
ModuleLoopUntilLive 모듈은 StreamPublisher 모듈을 설치하면 함께 설치되는 모듈이다. 때문에 먼저 StreamPublisher 모듈이 설치되어 있어야 한다.
StreamPublisher 모듈은 플레이리스트에 따라 콘텐츠 파일을 스트리밍하는 모듈로, 필러 콘텐츠를 재생한다. 사용자는 StreamPublisher 모듈이 재생하는 스트림을 수신한다. ModuleLoopUntilLive는 지정한 라이브 소스를 감시하다가 해당 소스가 연결되면 출력 스트림을 필러 영상에서 라이브 스트림으로 자동 절체(Change over)한다. 라이브 소스가 종료되면 출력은 다시 필러 영상으로 돌아간다.
즉, 필러 영상은 라이브 소스가 없을 때 출력되는 기본 신호이고, 라이브 스트림은 필러를 대신하는 우선 신호가 된다. 사용자가 수신해야 하는 스트림은 라이브 소스의 입력 스트림이 아니라 StreamPublisher가 생성한 출력 스트림이다. 이 점을 잘 기억해 두어야 독자 제위의 시간을 절약할 수 있다. 본 필자가 이 관계를 이해하는 데 시간을 꽤 버린 바 있다.
ModuleLoopUntilLive 모듈 설치
- 먼저
StreamPublisher모듈을 설치해 준다. - 와우자 스트리밍 엔진 확장 모듈 적용 방법을 참고해 모듈을 사용할 어플리케이션의
Application.xml의Module섹션에 모듈 정보를 등록해 준다.모듈 등록 정보 NameDescriptionFully Qualified Class NameModuleLoopUntilLive 필러 자동 절체 com.wowza.wms.plugin.streampublisher.ModuleLoopUntilLive <Module> <Name>ModuleLoopUntilLive</Name> <Description>필러 자동 절체</Description> <Class>com.wowza.wms.plugin.streampublisher.ModuleLoopUntilLive</Class> </Module> - 와우자 어플리케이션을 재시작해 준다.
StreamPublisher모듈을 설치하는 과정에서 와우자를 재시작 했기 때문에 다시 와우자를 재시작할 필요는 없다.
필러 재생 목록 파일 생성
필러용으로 사용할 콘텐츠 파일을 지정하기 위해 재생 목록 파일(.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>- SwitchOvered :
StreamPublisher가 생성할 출력 스트림 이름이다. 시청자에게 실제로 제공해야 하는 스트림이며, 이후ModuleLoopUntilLive설정에서도 출력 스트림으로 지정한다. - mp4:MohonMaaf2160p30f.mp4 : 필러로 사용할 콘텐츠 파일명과 프리픽스
어플리케이션 프로퍼티 추가
어플리케이션에 ModuleLoopUntilLive를 사용하기 위한 프로퍼티를 등록한다. streamPublisherSmilFile은 필러 출력 스트림을 생성하기 위한 StreamPublisher 프로퍼티이며, 나머지 두 프로퍼티는 라이브 입력 스트림과 출력 스트림의 대응 관계를 정의한다.
Path |
Name |
Type |
Value |
|---|---|---|---|
/Root/Application |
loopUntilLiveSourceStreams |
String |
입력을 감시할 라이브 스트림의 이름 |
/Root/Application |
loopUntilLiveOutputStreams |
String |
StreamPublisher가 생성하며 시청자에게 제공할 출력 스트림의 이름을 적어준다. |
/Root/Application |
streamPublisherSmilFile |
String |
필러 스트림 재생 목록(.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>
위의 프로퍼티는 ModuleLoopUntilLive를 다음과 같이 동작하게 한다.
StreamPublisher모듈이 mm.smil의 콘텐츠를 재생해 SwitchOvered 스트림을 생성한다.ModuleLoopUntilLive는 LiveEncoderIn.stream 스트림이 활성화되는지 감시한다.- LiveEncoderIn.stream 스트림이 활성화될 경우,
ModuleLoopUntilLive는StreamPublisher의 출력 스트림인SwitchOvered를 LiveEncoderIn.stream로 절체한다. - 클라이언트는 입력 스트림인
LiveEncoderIn.stream이 아니라 출력 스트림인SwitchOvered만 수신하면 된다.
위의 필수 프로퍼티를 포함해, 추가 옵션으로 사용할 수 있는 프로퍼티들의 목록은 와우자 공식 문서를 참고하기 바란다.
프로퍼티를 저장한 후, 해당 어플리케이션을 재시작하면 적용된다.
출력 스트림의 확인
VLC와 같은 플레이어를 이용해 SwitchOvered 출력 스트림을 모니터하며, 라이브 입력 스트림의 상태에 따라 출력 스트림이 절체되는지 확인한다. 참고로, 라이브 스트림을 끊거나 재개한다고 해서 즉시 스트림이 절체되지는 않는다. 십여 초 전후의 절체 시간이 필요하다.
FAQ
- 필러 콘텐츠란 무엇인가?
- 프로그램 편성 사이의 공백 시간을 채우거나 라이브 방송 시작 전의 대기 시간, 송출 장애와 같은 방송 사고가 발생했을 때 대신 보여 주는 콘텐츠이다. 프로그램 예고, 방송 안내, 공익 광고, 자연 풍경과 채널 홍보 영상 등을 사용할 수 있다.
- 라이브 스트리밍에도 필러 콘텐츠가 필요한가?
- 필러 콘텐츠를 사용하면 방송 시작 전이나 라이브 소스가 일시적으로 중단된 동안에도 동일한 라이브 스트림을 유지할 수 있다. 시청자는 새로운 방송 주소를 찾지 않고 같은 재생 화면에서 다음 방송이나 라이브 소스의 복구를 기다릴 수 있다.
- 유튜브 라이브 스트림을 오래 유지하면 추천 노출에 유리한가?
- 궁극적으로는 도움이 된다. 하지만, 채널의 콘텐츠 품질이 먼저 확보되어야 한다. 스트림을 오랫동안 유지하면 시청자와 추천 알고리즘의 선택을 받을 기회도 함께 늘어나지만, 콘텐츠의 품질이 낮거나 맥락없는 반복 콘텐츠의 경우 시청자의 이탈을 유발하고, 오히려 채널이 외면받는 원인이 된다. 시청자의 최대 유인 요소는 언제나 콘텐츠의 품질인 것을 기억해야 한다.
- 필러를 사용하면 OTT 라이브 서비스의 안정성이 높아지는가?
- 필러는 라이브 입력이 끊겼을 때 출력 스트림이 검은 화면이나 연결 종료 상태로 바뀌는 것을 줄이고, 동일한 재생 주소에서 대체 콘텐츠를 계속 제공할 수 있게 한다. 다만 필러는 입력 장애를 감추는 보조 수단이므로 이중화 인코더, 백업 네트워크, 스트림 상태 감시와 장애 알림을 대신하지는 않는다.
- 라이브 스트림과 필러 영상의 절체가 즉시 이루어지는가?
- 즉시 절체되지는 않는다. 모듈이 라이브 소스의 활성화 상태를 감지하고 새로운 소스의 키프레임을 기준으로 출력을 변경하는 시간이 필요하며, 통상 십여초 전후의 시간이 필요하다.
- 라이브 스트림의 안정성을 높이려면 필러 외에 무엇을 준비해야 하는가?
- 필러는 라이브 입력 장애 시 시청자에게 대체 화면을 제공하는 기능일 뿐 장애 자체를 해결하지는 않는다. 안정적인 서비스를 위해서는 이중화 인코더, 예비 입력 소스, 복수의 네트워크 경로, 스트림 상태 감시, 자동 장애 알림, 출력 모니터링과 운영자의 수동 절체 수단을 함께 준비해야 한다.
- 필러 송출을 OTT 블라인드 구현에 활용할 수 있는가?
- 가능하다. 주 편성에 OTT 송출 권한이 없는 콘텐츠가 포함된 시간에는 해당 콘텐츠 대신 송출 권한에 문제가 없는 필러나 대체 콘텐츠를 편성해 OTT 전용 채널 피드를 구성할 수 있다.
- 필러에서 라이브 스트림으로 자연스럽게 절체하려면 무엇을 맞춰야 하는가?
- 필러 영상과 라이브 입력의 코덱, 해상도, 프레임 레이트, 비트레이트 범위, 오디오 샘플 레이트와 채널 구성을 가능한 한 동일하게 맞추는 것이 좋다. 특히 키프레임 간격이 크게 다르면 절체 시 화면이 깨지거나 재생이 중단될 수 있으므로 실제 플레이어와 OTT 플랫폼에서 반복적으로 시험해야 한다.
- 와우자 스트리밍 엔진의
ModuleLoopUntilLive모듈은 어떤 기능을 제공하는가? - 라이브 입력 스트림을 감시하다가 라이브 소스를 사용할 수 없을 때는 필러 영상을 출력하고, 라이브 소스가 연결되면 출력 스트림을 라이브 영상으로 자동 절체(Change over)한다. 라이브 소스가 종료되면 다시 필러 영상으로 돌아간다.
- 필러로 사용하는 콘텐츠의 제한 사항이 있는가?
- 너무 짧은 길이의 콘텐츠를 필러로 사용할 경우 재생에 문제가 발생할 수 있다. 와우자에서는 최소 30초 이상의 콘텐츠를 사용할 것을 권장한다.
관련 자료 및 참고문헌
갱신 내역
- — 최초 게시
- — 1차 수정
- — 2차 수정 및 주소 이전