와우자 ModuleLoopUntilLive: 무중단 라이브 스트리밍을 위한 필러 자동 절체 가이드

라이브 스트림이 끊겨도 대체 필러(Filler) 자동 절체를 통해 끊김 없는 연속성과 안정성을 확보해 서비스 중단 없이 채널 완성도를 높이는 와우자 ModuleLoopUntilLive모듈 사용 방법

필러 콘텐츠(Filler Content)가 필요한 이유

필러 콘텐츠란?

방송 채널을 운영하는 중에는 방송 편성상 필연적으로 남는 시간이 발생한다. 예를 들어, 저녁 8시에 방영된 드라마가 끝난 후, 9시 정각에 뉴스가 시작되기까지 시간이 비게 된다. 시청자들의 이탈을 막으려면 이런 공백 시간 동안 뭔가를 보여주어야 한다.

이같이 전환 구간등의 공백을 자연스럽게 연결해 주는 콘텐츠가 필요한데, 이러한 용도로 사용되는 것을 필러 콘텐츠(Filler Content, 이하 필러)라 한다. 필러는 그 이름에서 유추할 수 있듯이 스케줄 사이의 공백을 메우는 보조 콘텐츠로, 프로그램 예고, 공익 광고, 자연 풍경, 뮤직비디오 등이 자주 사용된다. (보통 상업광고는 필러의 범주에 두지 않는다.)

라이브 스트리밍 채널에도 필러가 필요한 이유

이 개념은 전통적인 TV 채널 뿐만 아니라, 라이브 스트리밍 채널에도 동일하게 적용된다. 오히려 필러의 필요성은 라이브 스트리밍 채널이 더 크다. 그 이유는 다음과 같다.

  • 예기치 못한 송출 중단
    네트워크 불안정이나 기술적 오류로 인해 스트림이 끊기는 상황이 발생할 수 있다. 이러한 때에 필러로 절체(Change over)하면 방송 자체가 종료되지 않고 시청자의 이탈을 방지할 수 있다.
  • 시작 전 대기 공간 제공
    스트리밍이 정해진 시각에 시작될 경우, 필러 콘텐츠는 시작 전까지 시청자들이 미리 접속해 대기할 수 있도록 해 준다. 이는 단순한 대기를 넘어, 시청자의 이탈을 줄이고 기대감을 높일 수 있다.
  • 플랫폼 노출을 위한 스트림 유지
    유튜브와 같은 OTT 플랫폼에서는 스트림의 지속 시간이 추천 영상 알고리즘에 영향을 미친다. 방송 사이 또는 송출이 일시 중단 되더라도 필러를 활용하면 콘텐츠가 끊기지 않고 이어지므로, 전체 스트림 시간이 유지되어 채널의 노출과 인기도에 긍정적인 효과를 가져온다.

와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)은 이러한 기능을 구현하는 ModuleLoopUntilLive 확장 모듈을 제공한다. 이 모듈은 라이브 스트림이 없을 때는 필러용 스트림으로, 라이브 스트림이 있을 경우에는 라이브 스트림으로, 출력을 자동으로 절체(Change over)하는 기능을 제공한다.

ModuleLoopUntilLive 모듈 설치 및 설정 방법

ModuleLoopUntilLive 모듈과 StreamPublisher 모듈의 관계

ModuleLoopUntilLive 모듈은 StreamPublisher 모듈을 설치하면 함께 설치되는 하위 모듈이다. 때문에 먼저 StreamPublisher모듈이 설치되어 있어야 한다.

StreamPublisher 모듈은 플레이리스트에 따라 콘텐츠 파일을 스트리밍하는 모듈로, 필러 콘텐츠를 재생한다. 사용자는 StreamPublisher 모듈이 재생하는 스트림을 수신한다. ModuleLoopUntilLive모듈은 라이브 스트림을 감지하면 StreamPublisher모듈의 소스를 파일에서 라이브 스트림으로 변경해 준다.

즉, 필러가 주(Main) 신호, 라이브 스트림이 부(Sub) 신호이고, 사용자가 수신해야 하는 스트림은 StreamPublisher의 출력이다. 이 점을 잘 기억해 두어야 독자 제위의 시간을 절약할 수 있다. (본 필자가 시간을 꽤 버린 바 있다.)

ModuleLoopUntilLive 모듈 설치

  1. StreamPublisher모듈을 다운로드 한다.(와우자 스트리밍 엔진 확장 모듈 목록 참고)
  2. 다운로드 받은 모듈의 압축을 풀고 wse-plugin-streampublisher.jar 파일을 와우자 서버에 설치한다. (와우자 스트리밍 엔진 확장 모듈 설치 방법을 참고)
  3. 사용하려는 와우자 어플리케이션의 설정 파일인 Application.xmlModule섹션에 ModuleLoopUntilLive모듈을 등록한다.
    모듈 등록 정보
    NameDescriptionFully 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>
  4. 와우자 엔진 서비스를 재시작해 준다. (어플리케이션만 재시작해 주면 모듈 적재가 되지 않는다.)

필러 재생 목록 파일 생성

필러용으로 사용할 콘텐츠 파일을 지정하기 위해 재생 목록 파일(.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모듈이 생성할 스트림 이름으로. 이 스트림이 실제 사용자에게 제공되는 스트림이 된다.
  • mp4:MohonMaaf2160p30f.mp4 : 필러로 사용할 콘텐츠 파일명과 프리픽스

어플리케이션 프로퍼티 추가

어플리케이션에 ModuleLoopUntilLive를 사용하기 위한 프로퍼티들을 등록시켜 준다. (와우자 프로퍼티 추가 방법 참고)

ModuleLoopUntilLive 프로퍼티
PathNameTypeValue
/Root/ApplicationloopUntilLiveSourceStreamsString입력을 감시할 라이브 스트림의 이름
/Root/ApplicationloopUntilLiveOutputStreamsString서비스 용으로 출력되는 스트림의 이름, 아래에 설명할 필러 스트림의 이름을 적어준다.
/Root/ApplicationstreamPublisherSmilFileString필러 스트림 재생 목록(.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을 다음과 같이 동작하게 한다.

  1. StreamPublisher 모듈이 mm.smil의 콘텐츠를 재생해 SwitchOvered 스트림을 생성한다.
  2. ModuleLoopUntilLiveLiveEncoderIn.stream 스트림이 활성화 되는지 감시한다.
  3. LiveEncoderIn.stream 스트림이 활성화 될 경우, ModuleLoopUntilLiveStreamPublishermm.smil대신 LiveEncoderIn.stream을 재생하게 한다.
  4. StreamPublisher 모듈이 LiveEncoderIn.stream를 재생하면, SwitchOvered 스트림의 내용이 mm.smil 에서 라이브 스트림으로 절체된다.
  5. 클라이언트는 SwitchOvered스트림만 바라보고 있으면 필러가 적용된 라이브 스트림을 수신할 수 있다.

위의 필수 프로퍼티을 포함해, 추가 옵션으로 사용할 수 있는 프로퍼티들의 목록은 와우자 공식 문서를 참고하기 바란다.

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

출력 스트림의 확인

VLC와 같은 플레이어를 이용해 SwitchOvered 스트림을 모니터 하며 라이브 스트림의 활성화에 따라 스트림이 변경되는지 확인한다. 참고로, 라이브 스트림을 끊거나 재개한다고 해서 그 순간 즉시 스트림이 절체되지는 않는다. 수초 가량의 절체 시간이 필요하다.

라이브 소스-필러간 절체 동작 화면

마무리

라이브 스트리밍 환경에서 필러 콘텐츠는 단순한 빈 시간 채우기를 넘어 필수적인 요소이다. 채널의 안정성, 사용자 경험, 브랜딩에 기여하는 면이 많기 때문이다. 그리고 와우자 엔진은 StreamPublisher 모듈과 ModuleLoopUntilLive 모듈의 결합을 통해 라이브 스트림과 필러 스트림간의 자동 절체를 쉽게 구현할 수 있다.

이 글이 독자 제위의 라이브 스트림 서비스 품질과 안정성을 개선하는 데 자그마한 도움이 되기를 소망한다.

요약과 FAQ

필러(Filler)란?
장애등의 이유로 정규 송출이 중단되거나 편성상 공백시간이 발생할 경우 사용하는 콘텐츠로 프로그램 예고, 공익 광고, 자연 풍경, 뮤직비디오등이 사용된다.
라이브 스트리밍 채널에 필러가 필요한 이유는?
공백시간동안 시청자의 이탈을 막고, 정규 스트림이 끊어지더라도 필러 스트림으로 채널을 유지할 수 있어 인지도와 노출 알고리즘에 도움이 된다.
와우자 스트리밍 엔진의 ModuleLoopUntilLive 모듈은?
라이브 스트림이 끊길 경우 필러 스트림으로 자동 절체하는 기능을 제공한다.
StreamPublisher 모듈과 ModuleLoopUntilLive 의 관계는?
ModuleLoopUntilLive 모듈은 StreamPublisher 모듈이 필러를 재생할지 라이브 스트림을 재생할지 결정한다.
필러 콘텐츠는 하나의 파일만 사용할 수 있는가?
플레이 리스트 smil 파일에 여러 파일을 지정할 수 있다. 순차 또는 랜덤 재생이 가능하다.
필러 콘텐츠 목록을 수정할 수 있는가?
StreamPublisher 모듈의 스케줄 갱신과 동일한 방법으로 필러 콘텐츠 목록을 수정 후 적용할 수 있다.
필러 콘텐츠 사용시 주의사항은?
파일당 15초 이상의 길이를 권장하며, 라이브 스트림과 동일한 규격의 파일을 사용해야 한다.
필러 재생 목록의 프로퍼티 이름이 streamPublisherSmilFile인 이유는?
실제 필러를 재생하는 모듈은 StreamPublisher 모듈이다. 때문에 재생 목록은 streampublisher 모듈에 종속된다.

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

답글 남기기

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

Post comment