와우자 스트리밍 엔진의 스트림 타겟 기능을 이용하면 하나의 라이브 스트림을 여러 플랫폼이나 외부 서버로 동시에 전송할 수 있다. RTMP 주소의 구성 요소와 멀티 타겟 등록 및 상태 확인 방법을 순서대로 설명하고, OBS와 PRISM Live Studio의 다중 송출 제한 사항, 시스템 자원 및 송신 대역폭 관리 사항을 함께 살펴본다.
RTMP PUSH 방식과 멀티 플랫폼 송출의 필요성
라이브 스트리밍 방송과 멀티 플랫폼
라이브 스트리밍 방송의 수익 창출 기회가 여러 플랫폼을 통해 많은 시청자를 확보할수록 증가한다는 사실은 널리 알려진 상식이다. 동영상 플랫폼의 수는 점점 증가하고 있으며[1], 하나의 라이브 스트림을 여러 플랫폼에 동시에 송출하고자 하는 수요는 점점 많아지고 있다.
대부분의 라이브 스트리밍 플랫폼은 RTMP나 HLS 프로토콜을 이용해 플랫폼으로 스트림을 전송하는 PUSH 방식으로 라이브 스트림을 입력받는다.
문제는, 하드웨어·소프트웨어 인코더나 OBS, PRISM Live Studio와 같은 송출 프로그램이 기본적으로 제공하는 PUSH 타겟의 수에는 한계가 있다는 것이다. 이를 극복하기 위한 여러 방법들이 있지만, 복잡한 설정이나 추가적인 설비 또는 비용이 들어간다.
와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)의 Stream Target 기능을 이용하면 와우자로 입력된 하나의 라이브 스트림을 외부의 여러 스트리밍 플랫폼이나 서버로 동시에 전송할 수 있다. 각각의 송출 대상은 독립된 Stream Target으로 설정되므로, 플랫폼별 서버 주소와 스트림 키를 구분해 관리하는 것도 가능하다. 이 글에서는 와우자 엔진에 RTMP PUSH 방식의 Stream Target을 등록하는 방법과, 하나의 라이브 스트림을 복수의 Stream Target으로 동시에 송출하는 방법을 알아본다.
RTMP PUSH 설정
RTMP 주소의 구성
와우자 엔진에서 RTMP PUSH 타겟을 설정하려면 먼저 RTMP 주소의 구성을 이해해야 한다. 라이브 스트리밍 플랫폼이나 RTMP 서버에서 제공하는 송출 주소는 일반적으로 다음과 같이 호스트 주소, 어플리케이션 이름, 스트림 이름으로 구성된다.
rtmp://receive.eqmaker.kr/live/LiveFiller1
rtmp://- 통신에 사용할 RTMP 프로토콜을 나타내는 프리픽스
receive.eqmaker.kr- RTMP 타겟 서버의 호스트 주소. 도메인 대신 IP 주소를 직접 제공하거나 포트 번호를 함께 지정하는 경우도 있다.
live- 타겟 서버에서 스트림을 수신할 어플리케이션 이름
LiveFiller1- 타겟 어플리케이션에 송출할 스트림의 이름. 라이브 스트리밍 플랫폼에서는 흔히 Stream Key라고 한다.
플랫폼에 따라 RTMP 서버 주소와 Stream Key를 하나의 주소로 제공하기도 하고, 두 항목으로 나누어 제공하기도 한다. 두 항목이 분리되어 있다면 일반적으로 RTMP 서버 주소 뒤에 Stream Key를 결합해 전체 송출 주소를 구성할 수 있다.
한 가지 주의할 것은, RTMP 주소는 대문자와 소문자를 철저하게 구별한다. 즉, LiveFiller1과 livefiller1는 서로 다른 주소이다.
RTMP PUSH 설정 순서
- 와우자 스트리밍 엔진의 웹 UI에 접속한 후 송출하고자 하는 소스 스트림의 어플리케이션을 선택하고, 좌측 메뉴에서 Stream Targets를 선택한다.
- Status에
Not Enabled로 표시되어 있을 경우, Enable Stream Targets를 눌러 기능을 활성화해 준다.
Stream Targets 기능 활성화 -
팝업 창에서 OK 버튼을 클릭해 준다.

활성화 확인 -
Restart Now 버튼을 클릭해 어플리케이션을 재시작한다.

재시작 안내 - Add Stream Target 버튼을 클릭해 새로운 타겟을 추가한다.
-
Generic Target Destinations에서 RTMP를 선택한다.

스트림 타겟 유형 Third-Party Target Destinations에 연동하려는 플랫폼이 별도로 제공될 수도 있다. 이러한 전용 타겟은 플랫폼별 인증이나 연결 설정을 간소화할 수 있지만, 본 필자는 표준 연동 주소가 제공되는 경우 먼저 Generic Target Destinations를 시도해 보고, 문제가 있을 때 해당 플랫폼의 전용 타겟을 사용해 보는 것을 권한다.
타겟과 지원하는 프로토콜의 종류는 버전에 따라 달라질 수 있다. 위 그림의 예는 와우자 버전 4.11.2+6에서 확인한 목록이다.
-
Generic RTMP Configuration의 프로퍼티를 입력한다. 앞에서 예로 든
rtmp://receive.eqmaker.kr/live/LiveFiller1를 기준으로, 각 항목의 의미와 입력값은 다음과 같다.
Generic RTMP Stream Target 프로퍼티 - Stream Target Name
- 타겟을 구분하기 위한 이름으로, 실제 연동에 사용되지 않는다.
- Source Stream Name
- 타겟으로 전송할 소스 스트림의 이름. Incoming Streams에 표시된 스트림 이름을 그대로 입력한다.
- Destination Application Name
- 연동될 타겟의 어플리케이션 이름 – live
- Destination Application Instance
- 타겟 서버에서 별도의 어플리케이션 인스턴스를 지정한 경우 입력한다. 별도로 제공된 값이 없으면 비워 둔다.
- Destination Host
- 타겟 서버의 호스트 주소.
rtmp://프리픽스와 포트 번호를 제외하고 입력한다. - Destination Port
- 타겟 서버에서 제공한 RTMP 포트 번호를 입력한다. 별도의 포트가 지정되지 않았다면 일반적으로 기본 포트인
1935를 사용한다. - Destination Stream Name
- 타겟 서버 또는 플랫폼에서 제공한 스트림 이름이나 Stream Key를 입력한다. – LiveFiller1
- User Name / Password
- 타겟 RTMP 서버가 사용자 인증을 요구할 경우 제공된 사용자 이름과 비밀번호를 입력한다.
- Add This Target를 클릭해 등록을 완료하고, Return to Stream Targets를 클릭해 스트림 타겟 목록으로 돌아간다.
- 타겟 항목이 초록색으로 표시가 되어 있으면 연동이 완료된 상태이다.

활성화된 RTMP Stream Target 소스 스트림이 와우자로 입력되기 전에는 타겟 상태가
Waiting으로 표시될 수 있다. 붉은색 느낌표와 함께Error로 표시되면 타겟 서버와의 연결에 문제가 있음을 나타낸다. - 최종적으로 타겟 플랫폼에서 영상과 음성이 정상적으로 수신되는지 확인한다.
보통 VLC 등의 플레이어에서 타겟 주소를 입력하면 스트림을 확인할 수 있다. 타겟 서버의 관리자에게 스트림 수신 상태 확인을 요청하거나, 제공받은 재생용 주소를 통해 확인할 수도 있다. 유튜브와 같은 일부 플랫폼은 수신 스트림을 확인하는 UI를 제공하기도 한다.
다중 스트림 타겟 설정
다중 스트림 타겟 설정이라는, 다소 거창한 제목을 붙여 놓긴 했지만, 와우자에서 스트림 타겟을 하나 더 추가하는 것은 매우 간단한 작업이다. 위에 설명한 RTMP PUSH 설정 절차를 반복하면 원하는 만큼 하나의 소스 스트림에 여러 개의 타겟을 등록할 수 있다.

이러한 구성은 소스 스트림을 복제해서 여러 타겟으로 전송하는 구조이다. 즉, 와우자는 스트림을 트랜스코딩하거나 변환하지 않고 단순 전송만 수행하기 때문에, CPU 사용률이나 서버 부하의 증가가 거의 없이 다중 전송이 가능하다.
또한 소스 스트림의 포맷과 다른 프로토콜을 사용한다 하더라도 출력 프로토콜에서 허용하는 코덱이라고 한다면 해당 프로토콜에 맞게 변환 후 출력한다. 즉, 하나의 MPEG-TS 입력 스트림을 RTMP 플랫폼과 SRT 플랫폼으로 동시에 전송하는 것도 가능하다는 것이다.
이러한 기능은 큰 CPU 부하를 발생시키지 않는다. 다만 타겟마다 별도의 송출 연결이 생성되므로 네트워크 송신 대역폭과 연결 처리에 필요한 서버 자원은 타겟 수에 따라 증가한다.
이는 서버와 회선이 감당할 수 있는 범위 내에서, 얼마든지 타겟의 수를 추가할 수 있다는 의미로, 본 필자의 경우 하나의 H.264 25Mbps 라이브 스트림을 4곳의 플랫폼에 동시 송출(물론 다른 스트림들과 함께)하면서도 서버의 자원 소모는 거의 증가하지 않았고, 문제 또한 발생하지 않았다. 네트워크 회선만 양호하다면, 이처럼 손쉽게 안정적인 멀티 플랫폼 송출 구성이 가능하다.
마무리
많은 라이브 스트리밍 인코더와 송출 프로그램은 기본적으로 설정할 수 있는 스트림 타겟의 수가 제한되어 있다. 하나의 스트림을 여러 플랫폼으로 동시에 전송하려면 확장 플러그인을 설치하거나, 멀티스트리밍 서비스 또는 별도의 중계 솔루션을 이용해야 하는 경우가 많다. 이러한 방법은 구성에 따라 설정이 복잡해지고 추가 비용이 발생할 수 있다.
와우자 스트리밍 엔진이 무료 프로그램은 아니다. 하지만 하나의 스트림을 여러 플랫폼으로 배포하는 다른 무료 및 상용 솔루션과 비교해 충분한 가성비와 편의성을 갖추고 있다. 거기에 함께 제공되는 다양한 스트리밍 기능은 덤이라 할 수 있다.
이용자의 시청 플랫폼이 점점 다양해지는 환경에서 여러 플랫폼을 통해 콘텐츠의 노출 기회와 시청자 접점을 확대하는 일은 갈수록 중요해지고 있다. 와우자는 복잡한 방송 시스템을 직접 구축하기 어려운 라이브 스트리밍 운영자의 기술적 요구부터 동일한 라이브 스트림을 여러 플랫폼으로 분배해야 하는 대형 방송사의 송출 요구에 이르기까지 폭넓게 대응할 수 있는 솔루션이라고 본 필자는 생각한다.
FAQ
- 와우자 Stream Targets로 무엇을 할 수 있는가?
- 와우자 스트리밍 엔진으로 입력된 하나의 라이브 스트림을 YouTube를 비롯한 여러 플랫폼이나 외부 스트리밍 서버로 동시에 전송할 수 있다. 타겟마다 서버 주소, 스트림 이름, 프로토콜과 인증 정보를 개별적으로 설정할 수 있다.
- RTMP와 RTMPS의 차이는?
- RTMP(Real-Time Messaging Protocol)은 어도비(Adobe)에서 개발한 플래시(Flash)용 프로토콜이다. 오랜 시간 사용되며 현재는 라이브 스트리밍 분야의 데 팍토(De facto, 사실상의 표준) 프로토콜로 사용되고 있다. RTMPS는 RTMP 통신에 TLS 암호화를 적용한 방식이다.
- OBS나 PRISM Live Studio만으로 여러 플랫폼에 동시 송출이 가능한가?
- 유료 버전의 PRISM Live Studio는
Multistream이라는 이름으로 다중 플랫폼 전송을 지원한다. OBS Studio는 기본적으로 하나의 스트리밍 서비스로 송출하며, 여러 RTMP 타겟으로 동시에 전송하려면 Multiple RTMP Outputs와 같은 서드파티 플러그인이 필요하다. - 와우자 스트리밍 엔진은 HLS PUSH를 지원하는가?
- 추가 확장 모듈을 설치하면 표준 HLS PUSH 기능을 사용할 수 있다. 다만, YouTube의 HLS 인제스트처럼 별도의 업로드 방식과 인증 규격을 요구하는 타겟에는 전용 모듈이나 외부 솔루션이 필요하다. 본 필자는 YouTube와의 HLS 연동을 위해 직접 개발한
HLStoYTB모듈을 사용한다. - 와우자 스트리밍 엔진의 스트림 타겟이 늘어나면 어떤 서버 자원이 더 필요한가?
- 가장 크게 증가하는 자원은 네트워크 송신 대역폭이다. 타겟별 연결과 송신 버퍼를 처리하기 위한 메모리, 소켓과 스레드 처리 자원도 증가하며, RTMPS 암호화나 프로토콜 변환에는 추가 CPU 자원이 사용된다.
- 플랫폼마다 요구하는 스트림 규격이 다르면 어떻게 해야 하는가?
- 모든 플랫폼이 받을 수 있는 공통 규격으로 소스 스트림을 만들거나, 트랜스코딩한 다음 각 출력 스트림에 별도의 타겟을 연결한다. 해상도나 비트레이트뿐 아니라 비디오·오디오 코덱, 프레임레이트, 키프레임 간격과 오디오 샘플레이트도 함께 확인해야 한다.
- Generic Target Destinations를 먼저 권하는 이유는?
- 플랫폼이 표준 RTMP 서버 주소와 Stream Key를 제공한다면 Generic RTMP만으로도 연동에 필요한 기본 설정을 직접 구성할 수 있다. 설정 구조가 단순하고 플랫폼이 바뀌어도 같은 방식으로 적용할 수 있어 장애 원인을 확인하기도 쉽다. 다만 플랫폼 전용 인증이나 보안 기능이 필요하거나 Generic RTMP로 정상 연동되지 않는다면 Third-Party Target Destinations의 전용 타겟을 사용하는 것이 적합하다.
- 스트림 타겟 항목이 초록색인데도 플랫폼에서 스트림이 보이지 않는 이유는?
- 초록색의 Active는 와우자 스트리밍 엔진이 타겟 서버에 연결되어 스트림을 전송하고 있다는 의미이다. 플랫폼이 잘못된 Stream Key를 별도의 스트림으로 받아들이거나, 플랫폼에서 방송 시작 승인을 기다리고 있거나, 입력 규격이 플랫폼의 요구 사항과 맞지 않더라도 스트림을 전송하고 있다면 초록색으로 표시된다. 타겟 주소와 Stream Key, 플랫폼의 미리보기 화면, 코덱·해상도·비트레이트 설정을 함께 확인해야 한다.
- RTMP·HLS PULL 방식이란?
- 스트림을 수신하는 클라이언트나 미디어 서버가 송신 측 서버에 접속해 콘텐츠를 가져오는 방식이다. RTMP PULL은 수신 측이 RTMP 서버에 연결해 스트림을 지속해서 받고, HLS PULL은 플레이어나 미디어 서버가 HTTP 요청을 통해 플레이리스트와 미디어 세그먼트를 차례로 가져온다. 연결이나 요청을 시작하는 주체가 수신 측이라는 점이 PUSH 방식과 다르다.
- RTMP·HLS PUSH 방식이란?
- 스트림을 보내는 인코더나 미디어 서버가 타겟 서버로 콘텐츠를 전송하는 방식이다. RTMP PUSH는 송신 측이 타겟 서버에 연결해 스트림을 지속해서 전송한다. HLS PUSH는 송신 측이 생성한 플레이리스트와 미디어 세그먼트를 HTTP 업로드나 서비스별 전송 방식으로 타겟 스토리지 또는 서버에 전달한다. 와우자 Stream Targets에서는 와우자 엔진이 송신 측이 되어 지원되는 외부 플랫폼이나 스트리밍 서버로 콘텐츠를 전송한다.
- 하나의 타겟에서 장애가 발생하면 다른 플랫폼의 송출도 중단되는가?
- 와우자 스트리밍 엔진에서 각 스트림 타겟은 별도의 연결로 동작하므로 특정 플랫폼의 연결 오류가 다른 타겟을 중단시키는 것은 아니다.
참고 자료
갱신 내역
- — 최초 게시
- — 1차 수정
- — 2차 수정 및 주소 이전