스트리밍을 다루다 보면 이런 순간이 한 번쯤 온다.

 

 

“이 스트림을 다른 곳으로 보내고 싶은데?”

 

 

예를 들면 이런 상황이다.

 

  • OBS로 송출되는 RTMP 스트림을 다른 플랫폼으로 동시에 보내야 할 때
  • 기존 라이브 스트림을 재가공해서 다른 CDN으로 배포해야 할 때
  • 모니터링이나 백업용으로 스트림을 복제해야 할 때

 

보통 이런 작업을 하려면 별도의 미디어 서버를 두거나 ffmpeg로 파이프라인을 직접 만들어야 한다. 여기서 보통 ffmpeg를 꺼내 들게 되는데, 한 번 꼬이기 시작하면 밤 2시에 로그를 보면서 인생을 되돌아보게 된다. Streamlink는 이런 상황을 꽤 우아하게 해결해주는 서비스다.

 

오늘은 Tencent Cloud Streamlink를 정리해보려고 한다.

 

 

 

Streamlink란 무엇인가

 

Streamlink는 스트림을 받아서 다른 곳으로 전달하는 스트림 릴레이 서비스다.

 

쉽게 말하면

Input Stream → Streamlink → Destination

 

이 구조를 클라우드에서 관리형으로 제공하는 서비스다.

 

대표적인 특징은 다음과 같다.

 

  • 다양한 프로토콜 지원 (RTMP, SRT 등)
  • 스트림 릴레이 및 복제
  • 글로벌 네트워크 기반 전달
  • 콘솔 기반 간단한 설정

 

즉, 스트림을 받아서 다른 플랫폼으로 전달하는 역할을 한다.

 

개념적으로 보면 CDN과 Media Server 사이 어딘가에 위치한 서비스라고 보면 이해하기 쉽다. 유사한 서비스로는 AWS Elemental MediaConnect가 있는데, Streamlink가 가장 유용한 상황은 다음과 같다.

 

 

1. 스트림 멀티 배포

 

하나의 라이브를 여러 플랫폼으로 동시에 보내야 하는 경우다.

 

예를 들어

OBS
  ↓
Tencent Streamlink
  ↓
YouTube Live
  ↓
Twitch
  ↓
Custom CDN

 

같은 구조를 만들 수 있다.

 

OBS에서 여러 플랫폼으로 직접 송출할 수도 있지만,

클라우드에서 릴레이하는 방식이 훨씬 안정적인 경우가 많다.

 

 

2. 스트림 백업 (Failover)

 

라이브 서비스에서는 스트림 이중화가 중요하다.

 

예를 들어 이런 구조를 만들 수 있다.

 

Primary Encoder
        ↓
     Streamlink
      ↙     ↘
 Tencent CDN   Backup CDN

 

이렇게 하면 특정 CDN에 문제가 생겨도 빠르게 전환할 수 있다.

 

대형 스포츠 이벤트나 콘서트 같은 라이브에서 자주 사용하는 구조다.

 

 

3. 프로토콜 변환 파이프라인

 

스트리밍 서비스에서는 종종 프로토콜 변환이 필요하다.

 

예를 들어

SRT → RTMP
RTMP → HLS
RTMP → WebRTC

 

같은 파이프라인이다.

 

Streamlink는 이런 스트림 전달 과정에서

다른 미디어 서비스들과 쉽게 연결된다.

 

예를 들어 Tencent Cloud 기준으로 보면

Encoder
 ↓
Streamlink
 ↓
StreamLive
 ↓
StreamPackage
 ↓
CSS CDN
 ↓
Player

 

같은 구조로 확장할 수 있다.

 

 

 

기본 동작 구조

Streamlink의 동작은 생각보다 단순하다.

 

  1. Input Stream 수신
  2. Stream Buffering
  3. Destination Push

 

구조를 간단히 그리면 다음과 같다.

출처 : https://www.tencentcloud.com/document/product/1073/56024

 

이때 중요한 포인트는

Streamlink 자체는 플레이어 서비스가 아니라 스트림 전달 서비스라는 점이다.

즉, 플레이어는 별도의 CDN이나 패키징 서비스가 담당한다.

 

 

 

지원 프로토콜

 

Streamlink는 다양한 스트리밍 프로토콜을 입력(Input)과 출력(Output) 양쪽에서 지원한다.

이를 통해 서로 다른 스트리밍 시스템 간의 연결 브릿지 역할을 할 수 있다.

2026년 3월 기준으로 SRT ,RTMP_PUSH , RTMP_PULL ,RTP ,RTSP_PULL ,RIST 프로토콜을 지원하며

이러한 프로토콜 지원 덕분에 Streamlink는 다양한 환경에서 활용될 수 있다.

 

예를 들어, 

SRT Encoder
   ↓
Streamlink
   ↓
RTMP CDN

 

또는

RTSP Camera
   ↓
Streamlink
   ↓
SRT Distribution

 

같이 서로 다른 프로토콜 간의 연결 파이프라인을 쉽게 구성할 수 있다.

 

특히 방송 장비나 하드웨어 인코더에서는 SRT / RTP / RIST 같은 전송 프로토콜을 많이 사용하기 때문에

Streamlink를 통해 CDN이나 인코더, OTT 플랫폼과 연결하는 구조를 만들기 쉽다.

 

 

 

Failover 기능

 

Streamlink는 단순한 스트림 릴레이 기능 외에도, Failover 기능을 통해 입력 스트림 장애 시 자동으로 백업 스트림으로 전환할 수 있다.

 

예를 들어

Primary Encoder
        ↓
     Streamlink
      ↓
   Distribution

Primary 신호가 끊길 경우

Backup Encoder
        ↓
     Streamlink
      ↓
   Distribution

 

로 자동 전환된다.

 

이 기능은

 

  • 스포츠 중계
  • 대형 이벤트 라이브
  • 방송 송출

 

같은 중단이 허용되지 않는 스트리밍 환경에서 특히 중요하다.

 

 

 

Tencent Cloud StreamLive 와의 연동

 

Streamlink는 단순히 스트림을 다른 플랫폼으로 전달하는 것뿐만 아니라 Tencent Cloud의 라이브 인코딩 서비스인 StreamLive와도 연동할 수 있다. 이를 통해 스트림을 다음과 같은 파이프라인으로 확장할 수 있다.

Encoder
   ↓
Streamlink
   ↓
StreamLive
   ↓
StreamPackage
   ↓
CSS CDN
   ↓
Player

 

여기서 Streamlive (라이브 인코딩) , Streampackage (라이브 패키징) , CSS CDN (라이브 CDN) 에 대해서는 다른 글을 참고하면 설명을 해놓은게 있다.

 

 

 

 

개인적인 생각

 

스트리밍 아키텍처를 설계하다 보면

“스트림을 어디로 어떻게 보내야 하는가” 라는 문제가 계속 등장한다.

 

이걸 직접 구현하면 보통 이런 것들이 필요하다.

 

  • ffmpeg relay
  • media server cluster
  • monitoring
  • failover

 

솔직히 말하면 꽤 귀찮다.

 

Streamlink 같은 서비스는 이런 작업을 클라우드에서 관리형으로 처리해 준다는 점에서 꽤 유용하다.

 

특히

 

  • 멀티 CDN 구조
  • 플랫폼 동시 송출
  • 스트림 백업

 

같은 시나리오에서는 생각보다 많이 쓰이게 된다. 

 

다음 글에서는 직접 Tencent cloud 콘솔에서 Streamlink Flow를 생성해서 스트림을 전달하는 구성을 구현해볼 예정이다.

 

 

<참고>

Streamlink 공식문서 : https://www.tencentcloud.com/en/document/product/1073

+ Recent posts