라이브 스트림 멀티 플랫폼 동시 RTMP PUSH 송출 : 와우자 스트리밍 엔진 Stream Target 설정법
라이브 방송 스트림 RTMP PUSH 송출과, 하나의 소스를 동시에 복수의 여러 멀티 플랫폼으로 다중 전송하기 위해 Wowza Streaming Engine의 Stream Target 항목을 설정하는 방법을 안내합니다.
RTMP PUSH 방식과 멀티 플랫폼 송출의 필요성
라이브 스트리밍 방송과 멀티 플랫폼
라이브 스트리밍 방송의 수익이 여러 플랫폼을 통해 많은 시청자를 확보할수록 증가한다는 사실은 시장 분석기관들의 리포트가 아니어도, 잘 알려진 사실이다. 통계에 따르면, 동영상 플랫폼의 수는 점점 증가하고 있으며, 하나의 라이브 스트림을 여러 플랫폼에 동시에 송출하고자 하는 수요는 점점 많아지고 있다.
대부분의 라이브 스트리밍 플랫폼은 RTMP PUSH방식으로 라이브 스트림을 입력받는다. 문제는, 대다수의 인코더(하드웨어나 소프트웨어를 막론하고)나 송출 프로그램(OBS나 Prism과 같은)에서 제공되는 RTMP PUSH 타겟의 수가 많지 않다는 것이다. 이를 극복하기 위한 여러 방법들이 있지만, 복잡한 설정이나 추가적인 설비 또는 비용이 들어간다.
하지만 와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자 엔진)을 사용하면 매우 손쉽게 복수의 다중 플랫폼으로 라이브 스트림을 동시에 송출할 수 있다. 이 글에서는 와우자 엔진을 RTMP PUSH 타겟에 연동하는 방법과, 복수의 멀티 플랫폼을 타겟으로 동시에 다중 송출하도록 설정하는 방법을 알아본다.
RTMP PUSH 설정
RTMP 주소의 구성
먼저, RTMP 주소가 어떻게 구성되어 있는지 이해해야 와우자 엔진의 설정이 가능하다. 플랫폼 등에서 제공되는 RTMP 타겟 주소는 보통 다음과 같은 형식으로 제공되며, 각 부분이 의미하는 것은 아래와 같다.
rtmp://demo.decteng.com/live/LiveFiller1
rtmp://
- rtmp 프로토콜 프리픽스
demo.decteng.com
- 타겟의 호스트 주소
live
- 타겟 호스트의 어플리케이션 이름
LiveFiller1
- 타겟에서 사용할 스트림 이름(흔히 Stream Key 라 한다.)
한 가지 주의할 것은, RTMP 주소는 대문자와 소문자를 철저하게 구별한다. 즉, LiveFiller1
와 livefiller1
는 서로 다른 주소이다.
설정 순서
- 송출하고자 하는 소스 스트림의 어플리케이션을 선택하고, 좌측 메뉴에서 Stream Targets를 선택한다.
- Status에
Not Enabled
로 표시되어 있을 경우, Enable Stream Target를 눌러 기능을 활성화 해준다.스트림 타겟 활성화 - 팝업 창에서 OK버튼을 클릭해 준다.
스트림 타겟 활성화 확인 - Restart Now버튼을 클릭해 어플리케이션을 재시작한다.
스트림 타겟을 활성화 하면 재시작이 필요하다 - Add Stream Target버튼을 클릭해 새로운 타겟을 추가한다.
- Generic Target Destinations에서 RTMP를 선택한다.
와우자 스트리밍 엔진이 지원하는 타겟 목록 Third-Party Target Destinations 목록에 연동하려는 타겟이 있을 수 있다. 하지만 본 필자는, Generic 으로 먼저 연동을 시도하고, 문제가 있을 경우 시도해 보는 것을 권한다.
- RTMP Configuration의 프로퍼티들을 채워준다. 위의 예시로 든 RTMP 주소를 사용 했으며, 각 항목의 의미는 아래와 같다.
- Stream Target Name
- 타겟을 구분하기 위한 이름으로, 실제 연동에 사용되지 않는다.
- Source Stream Name
- 송출할 소스 스트림 네임.
Incoming Streams
에 표시된 그대로 적어주면 된다. - Application Name
- live
- 연동될 타겟의 어플리케이션 이름
- Destination Host
- demo.decteng.com
- 타겟의 호스트 주소. 프리픽스와 포트번호는 제외하고 입력
- Destination Port
- 1935
- 필요시 제공된 포트 번호를 입력해 준다.
- Destination Stream Name
- LiveFiller1
- 연동될 타겟에 제공되는 스트림 이름
- User Name / Password
- 사용자 인증이 필요할 경우 입력
- Add This Target를 클릭해 등록을 완료하고, Return to Stream Targets를 클릭해 스트림 타겟 목록으로 돌아간다.
- 타겟 항목이 초록색으로 표시가 되어 있으면 연동이 완료된 상태이다.
정상적으로 타겟과 연동된 모습
RTMP PUSH 멀티 플랫폼 설정
멀티 플랫폼 설정이라는, 다소 거창한 제목을 붙여놓긴 했지만, 와우자 엔진에서 스트림 타겟을 하나 더 추가하는 것은 매우 간단한 작업이다. 위에 설명한 RTMP PUSH 설정 절차를 동일하게 반복하면 원하는 만큼 타겟을 추가해줄 수 있다.

이러한 구성은 소스 스트림을 복제해서 여러 타겟으로 전송하는 구조이다. 즉, 와우자 엔진은 스트림을 트랜스코딩하거나 변환하지 않고 단순 전송만 수행하기 때문에, CPU 사용률이나 서버 부하의 증가가 거의 없이 다중 전송이 가능하다. 이는 회선이 감당할 수 있는 범위 내에서, 얼마든지 타겟의 수를 추가할 수 있다는 의미이다.
실제로 본 필자의 경우, 하나의 H.264 25Mbps 라이브 스트림을 4곳의 플랫폼에 동시 송출 (물론 다른 스트림들과 함께) 하면서도 서버의 자원 소모는 거의 증가하지 않았고, 문제 또한 발생하지 않았다. 네트워크 회선만 양호하다면, 이처럼 손쉽게 안정적인 멀티 플랫폼 송출 구성이 가능하다
마무리
점점 더 다양해지는 플랫폼 환경에서, 콘텐츠를 최대한 다양한 플랫폼에 노출시켜 시청자를 확보하는 것은 선택이 아닌 필수가 되어가고 있다. 와우자 엔진은 이러한 기술적 요구를 매우 손쉽게 해결할 수 있는 유용한 도구가 되어준다. (사실, 원래 이런일 하라고 만든 놈이다.)
특히, 별도의 트랜스코딩 이나 추가적인 서버의 부하 없이 매우 손쉽게 멀티 플랫폼 송출이 가능하다는 점은, 기술적 기반이 부족한 라이브 스트리밍 운영자에게도 매우 유용할 것이라 본 필자는 생각한다.
요약 및 FAQ
- RTMP란?
- RTMP(Real-Time Messaging Protocol)은 어도비(Adobe)에서 개발한 플래시(Flash)용 프로토콜이다. 오랜 시간 사용되며 현재는 라이브 스트리밍 분야의 데 팍토(De facto, 사실상의 표준) 프로토콜로 사용되고 있다.
- RTMP PULL 방식이란?
- 클라이언트가 RTMP 오리진 서버로 접속해 스트림을 가져가는 방식이다. 통상적인 서버-클라이언트 통신방식과 유사하다.
- RTMP PUSH 방식이란?
- RTMP 오리진 서버가 타겟에 접속해 스트림을 전송해(밀어)주는 방식이다. 보통 라이브 스트림을 플랫폼과 연동할때 많이 사용된다.
- 타겟 항목이 초록색이지만 플랫폼에서 스트림 확인이 안되는 이유는?
- 타겟 항목이 초록색으로 표시되는 것은, 타겟과 연결이 수립되어 스트림을 전송하고 있다는 의미이다. 즉, 잘못된 스트림 키를 가지고 전송을 하고 있다 하더라도 와우자에서는 초록색으로 표시된다. 타겟 설정에 오타가 있는지 확인해 본다.
- 다중 플랫폼 연동시 주의해야할 사항은?
- 모든 플랫폼에서 허용하는 공통된 규격의 스트림을 준비해야 한다. 또한 출력 비트레이트가 전송 플랫폼 수에 비례하므로 대역폭 관리에 주의해야 한다.
- Generic Target Destinations을 권하는 이유는?
- 플랫폼들은 사용자의 오리진 서버(또는 인코더)가 어느것인지 알지 못한다. 때문에 표준 연동을 가정하고 시스템을 구축한다. 문제가 발생하지 않는다면 표준 연동으로 충분하다.