와우자 스트리밍 엔진 어플리케이션 스트림 복제 : ModuleDuplicateStreams 모듈 사용 방법

Last modified date

와우자 스트리밍 엔진에서 ModuleDuplicateStreams 모듈을 사용해 어플리케이션 간 스트림을 복제하고 공유하는 방법을 단계별로 설명한다.

와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자) 서버를 운용하다 보면, 같은 와우자 서버에 있는 다른 어플리케이션의 스트림을 다른 어플리케이션에서 사용해야 할 때가 생긴다. 예를 들어, 한 어플리케이션에서 생성된 스트림을 다른 어플리케이션에서 재활용 하고자 하는 경우이다.

문제는 서버 외부에서는 잘 사용할 수 있는 스트림 URL을 동일한 인스턴스(Instance) 즉, 동일한 와우자 서버의 다른 어플리케이션에서 사용하려고 하면 스트림 수신이 불가능하다는 점 이다. 즉, 내부 어플리케이션 간에는 연결이 불가능하다.

이러한 문제를 해결해주는것이 바로 와우자의 확장 자바 모듈인 ModuleDuplicateStreams 모듈이다.

ModuleDuplicateStreams 모듈이란?

ModuleDuplcateStreams 라는 확장 모듈은, 한 인스턴스 내에서 어떤 어플리케이션의 스트림을 복제해 사용하고자 하는 타겟 어플리케이션에게 마치 RTMP PUSH처럼 스트림을 제공해 주는 모듈이다.

이 글에서는 해당 모듈의 사용법과, 이전에 작성한 와우자 서버 리스너로 생성된 라이브 스트림을 다른 와우자 어플리케이션이 사용할 수 있도록 구성하는 과정을 예로, ModuleDuplcateStreams 모듈 설정 방법을 설명한다.

ModuleDuplicateStreams 사용방법

Step 1 : 사전준비

작업을 시작하기 전, 다음의 것들을 준비 해 준다.

  • ModuleDuplcateStreams 모듈 다운로드 : 링크를 통해 연결된 깃 허브에서 완성된 jar 파일을 다운받을 수 있다.
  • 와우자 서버에 모듈 설치 : 다운로드 받은 jar 파일을 와우자 라이브러리 디렉토리에 복사해 설치하면 된다.
  • 복제할 소스 스트림과 어플리케이션, 그리고 복제한 스트림을 수신할 어플리케이션. 본 예시에서의 구성은 아래와 같다. 소스FileToLive어플리케이션의 MusicBox스트림 타겟AppToReceive어플리케이션

Step 2 : ModuleDuplicateStreams 모듈 등록

  1. 와우자 UI에 접속 후, 어플리케이션 목록에서 복제할 소스 스트림이 존재하는 어플리케이션을 선택하고 Modules 탭을 선택한다.
    Application menu of FileToLive appalication.
    FileToLive 어플리케이션의 모듈 목록
  2. Edit버튼을 클릭한다.
    Module list of FileToLive base : Base logging : Clieng Logging, flvplayback : FLVPlayback, ModuleCoreSecurity : Core Security Module for Applications
    FileToLive 어플리케이션 모듈 목록
  3. Add Module버튼을 클릭해 Add New Module창을 띄운 후, 다음과 같이 모듈을 등록한다.
    Add New Module window. Name : ModuleDuplicateStreams, Description : Copy stream to AppToReceive, Fully Qualified Class Name : com.wowza.wms.plugin.ModuleDuplicateStreams
    DuplicateStreams를 등록하는 모습
    Name
    ModuleDuplcateStreams
    Description
    운영자 필요에 따른 추가적인 설명
    Fully Qualified Name
    com.wowza.wms.plugin.ModuleDuplcateStreams
  4. AddSave 클릭으로 설정을 저장한다.
  5. Restart Now버튼을 클릭해 어플리케이션을 재 시작 한다.

Step 3 : ModuleDuplicateStreams 프로퍼티 설정

어플리케이션의 Properties를 선택해 설정 메뉴로 진입 한 후, Add Custom Property버튼을 클릭해 ModuleDuplcateStreams 모듈이 사용하는 아래 목록의 프토퍼티(Name)들을 추가해 준다.

  • duplicateStreamsStreamNames
    Path
    /Root/Application
    Type
    String
    Value
    복제할 스트림 명 (이 예에서는 MusicBox)
    복제할 스트림의 스트림 이름을 입력해 준다. Incoming Streams목록에서 이름을 확인할 수 있다.
  • duplicateStreamsTargetAppName
    Path
    /Root/Application
    Type
    String
    Value
    타겟 어플리케이션 이름(이 예에서는 AppToReceive)
    복제한 스트림을 보낼 타겟 어플리케이션의 이름을 입력해 준다. 어플리케이션 목록에 표시되는 이름을 적어주면 된다.
  • duplicateStreamsTargetVHostName
    Path
    /Root/Application
    Type
    String
    Value
    타겟 어플리케이션의 VHost
    타겟 어플리케이션에 별도의 VHost 설정이 없다면 _defaultVHost_를 입력하거나, 프로퍼티를 설정하지 않도록 한다.
  • duplicateStreamsStreamNameSuffix
    Path
    /Root/Application
    Type
    String
    Value
    타겟 어플리케이션에서 사용할 스트림 네임의 접미사(이 예에서는 From_FileToLive)
    소스 스트림의 이름 뒤에 접미사를 추가해 구분할 수 있도록한다.
    프로퍼티를 설정하지 않을 경우 기본값으로 원본 스트림 이름의 뒤에 _dest를 붙여준다.
Custom properties of Wowza Application. duplicateStreamsStreamNames : Musicbox, duplicateStreamsTargetAppName : AppToReceive, duplicateStreamsStreamNameSuffix : From_FileToLive
모든 프로퍼티를 입력 완료한 모습

Step 4 : 타겟 어플리케이션 확인

소스 어플리케이션의 설정이 완료 되었으니, 이제는 타겟 어플리케이션에서 정상적으로 스트림 수신이 되고 있는지 확인해 볼 차례이다. 아래의 순서를 참고하여 스트림 수신 상태를 확인해 보도록 한다.

  1. 어플리케이션 목록에서 위의 duplicateStreamsTargetAppName에 설정한 수신 어플리케이션을 선택한다.
  2. Incomming Stream을 클릭해 어플리케이션의 활성 스트림 목록을 확인한다.
  3. 해당 스트림을 클릭해 스트림 수션 여부를 확인한다.
Receving MusicBoxFrom_FileToLive stream at AppToReceive application. Bytes in of Network Throughput is 191.320Kbits/s
AppToReceive 에서 수신되는 복제 스트림, Prefix FileToLive가 붙어있다.

Step 5 : 진실의 시간 (클라이언트에서 확인)

VLC등의 외부 플레이어를 이용해 스트림 상태를 최종적으로 확인 한다. Incoming Stream 에서 표시되는 비트레이트는 스트림의 유무만을 나타낸다 생각해야 한다. 스트림이 정상인가의 여부를 확인하기 위해서는 반드시 디코더를 통해 직접 재생해서 확인해야 한다

ModuleDuplicateStreams 모듈 참고사항

  1. duplicateStreamsStreamNameSuffix의 값을 공백으로 두면, 출력되는 스트림의 이름은 입력 스트림의 이름과 동일하게 출력된다. 단, 웹UI 상에서는 공백으로 둘 경우 저장이 불가능한 오류가 발생한다. 이 경우, 해당 Application.xml 파일을 직접 수정해 공란으로 두면 적용이 가능하다.
    <Property>
      <Name>duplicateStreamsStreamNames</Name>
      <Value>MusicBox</Value>
      <Type>String</Type>
    </Property>
    <Property>
      <Name>duplicateStreamsTargetAppName</Name>
      <Value>AppToReceive</Value>
      <Type>String</Type>
    </Property>
    <Property>
      <Name>duplicateStreamsStreamNameSuffix</Name>
      <Value></Value>
      <Type>String</Type>
    </Property>
    MusicBox stream is receving on AppToReceive
    스트림 이름에서 프리픽스가 제거된 모습
  2. ModuleDuplcateStreams에 대한 자세한 정보는 와우자에서 제공하는 공식 문서를 참고하기 바란다.

맺음

ModuleDuplicateStreams 모듈을 활용하면 와우자의 어플리케이션 간 스트림 공유 및 재활용이 손쉽게 가능하다. 스트리밍 효율성을 높이고, 동일한 콘텐츠를 다양한 용도로 활용하려는 상황에 매우 본 글을 기억해 주기 바란다.

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