본문 바로가기
프로젝트/동영상

[라이브 스트리밍 서비스] - 1. 서비스의 구조 & 실행 방법

by Riverandeye 2020. 7. 4.

이 글은 제가 어떻게 서비스의 구조를 가져갔는지에 대한 기록이라, 몇몇 내용들이 생략될 수 있습니다.

서버를 2개나 잡아먹고 있어서 (사실 nginx를 쓰면 그럴 이유가 없었는데) 어서 내려야해.. (빈 지갑)

자세한 것과 궁금한 부분들은 댓글로 달아주시면 감사하겠습니다. 

 

서비스의 구조

 

처음 목표 (multicast를 어캐 해야하지..)

처음 프로젝트 구상을 할 땐 이런 구조를 생각했었다. rtmp와 hls를 동시에 수행하는 컨테이너에, 사용자가 송출한 영상을 multicast하여 각 컨테이너마다 이를 처리하여 hls fragment를 구성한다. 

user가 많아지면 컨테이너 수를 늘려 요청을 분산하는 식으로.. 

 

근데 multicast를 어떻게 해야 할 지 몰라서 (+ 시간없음크리..) 우선 밑에와 같이 간단하게 구성하였다.  

애는 내 TODO 에 포함되어 있다..

 

구성한 서비스의 구조

구조는 단순하게, 2개의 서버에 하나는 라이브 스트리밍, 하나는 웹 서비스를 올렸다. 웹 서비스엔 소켓 서버도 포함.

아쉽지만 도커라이징한 스트리밍 서버는 실제로 이용하진 못하였다. 

 

nginx에서 rtmp 모듈이 오픈소스로 제공되어 이를 이용하였다. 해당 git 주소는 여기에 있다. 

 

실행 방법

 

스트리밍 자체는 OBS Studio를 이용하였다. 영상 녹화 및 실시간 스트리밍을 해주는 오픈 소스 소프트웨어이다. 

 

매우 깔끔한 UI를 자랑한다

 

비트레이트와 방송 url은 설정에서 지정할 수 있다. 화면 목록과 소스 목록을 지정해서 원하는 화면을 구성한 후 방송 시작 버튼을 누르면 방송이 시작된다. 

 

웹 서비스를 할 때 m3u8 파일의 이름으로 url을 생성하였고, 방을 만들었다. 

그거보다 더 좋은 방법이 있을 것이라 고민이 들지만, 우선은 그렇게 구성하였다. 

댓글