Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스로 나만의 라이브 비디오 스트리밍 서버 구축하기

대부분의 라이브 스트리밍 도구와 사이트는 무료로 이용할 수 있지만, 계정을 만들어야 하는 경우가 많고 온라인에 노출되기를 원하지 않는 개인 정보를 요구하기도 합니다. 또한 콘텐츠를 광고 뒤에 숨겨두거나, 자신들조차 지키지 않는 복잡한 서비스 약관을 적용하는 경우도 흔합니다.

라이브 스트리밍을 즐기지만 영상을 대중에게 공개할 필요는 없는 사람들도 있습니다. 이들은 자신의 스트림과 제작하는 콘텐츠를 더 많이 통제하고 싶어 합니다. 이러한 문제에 대한 최선의 해답은 리눅스와 같은 오픈소스 소프트웨어입니다.

시작하기 전에 고려할 사항

개인 스트리밍 서버를 구축하기 전에 몇 가지 질문을 스스로에게 던져야 합니다. 첫째, 어떤 화질의 스트림을 원하시나요? 둘째, 예상 시청자 수는 어느 정도인가요? 셋째, 스트리밍한 콘텐츠를 어디에 저장할 것인가요? 넷째, 누가 그 콘텐츠에 접근할 수 있어야 하나요?

시스템 요구 사항도 고려 대상입니다. 하지만 이 부분에 대해 정해진 규칙은 없으므로, 직접 실험해 보면서 자신의 목표에 가장 적합한 구성을 찾는 것이 좋습니다.

또한 스트리밍의 오디오와 비디오 부분을 처리할 프로토콜을 정해야 합니다. RTMP(Real-Time Messaging Protocol)가 훌륭한 선택이지만, 상황에 따라 WebRTC 같은 다른 프로토콜이 더 적합할 수도 있습니다. RTMP는 폭넓은 지원을 받기 때문에 이 글에서는 RTMP를 중심으로 설명합니다.

그리고 '라이브' 스트리밍에서 발생할 수 있는 지연도 염두에 두어야 합니다. 라이브를 시작했다고 해서 모든 것이 완벽하게 맞아떨어지는 것은 아닙니다. 영상 스트림은 인코딩, 전송, 버퍼링, 표시 과정을 거치기 때문에 스트림 속성을 조금씩 조정해야 할 필요성을 미리 예상해 두세요.

리눅스 서버 설정

여기서는 개인적으로 가장 선호하는 우분투(Ubuntu) 리눅스를 기준으로 설명합니다. GUI 환경을 선호하는 분들을 위해 우분투 데스크톱 버전도 사용할 수 있습니다.

  • 우분투 설치 프로그램을 실행하고 필요에 맞는 설정을 선택합니다. 서버로 사용할 것이므로 고정(정적) 네트워크 설정을 해두는 것이 좋습니다.
  • 설치 후 자동으로 재부팅되지 않으면 시스템을 재부팅합니다. 우분투가 부팅되면 사용 가능한 업데이트를 모두 설치합니다:
sudo apt update
sudo apt upgrade

이 스트리밍 서버에서는 Nginx 웹 서버를 사용합니다. 설치 명령은 다음과 같습니다:

sudo apt install nginx

Nginx가 미디어 스트림을 처리할 수 있도록 RTMP 모듈을 설치합니다:

sudo add-apt-repository universe
sudo apt install libnginx-mod-rtmp

Nginx 설정을 조정하여 미디어 스트림을 수신하고 전달할 수 있도록 합니다.

sudo nano /etc/nginx/nginx.conf

설정 파일 맨 아래에 다음 코드를 추가합니다:

rtmp {
server {
listen 1935;
chunk_size 4096;

application live {
live on;
record off;
}
}
}

설정 파일을 저장합니다. 나중에 스트리밍 서버를 구동할 때 사용하게 됩니다.

새 설정을 적용하기 위해 Nginx를 재시작합니다:

sudo systemctl restart nginx

스트리밍 소프트웨어 설정

서버 준비가 끝났으니 이제 스트리밍 소프트웨어를 설정할 차례입니다. 여기서는 OBS(Open Broadcaster Software)를 사용해 보겠습니다.

  • OBS 공식 사이트에 접속해 리눅스용 빌드를 다운로드합니다. 소프트웨어를 실행한 후 자신의 하드웨어에 맞는 설정으로 OBS를 구성합니다.
  • 소스(Source) 아래의 + 버튼을 클릭해 스트리밍 소스를 추가합니다.

테스트 목적으로 디스플레이 캡처(Display Capture)를 선택하고 소스 이름을 입력합니다.

확인(OK) 버튼을 클릭하면 OBS가 데스크톱 화면을 그대로 송출합니다.

다음으로 파일(File) 탭을 클릭하고 설정(Settings)을 선택합니다.

스트림(Stream) 섹션에서 스트림 유형(Stream Type)을 사용자 지정(Custom)...으로 설정하고, 서버(Server) 입력란에 다음 URL을 입력합니다:

rtmp://IPaddress/live

IPaddress 부분에는 스트리밍 서버의 IP 주소를 입력합니다.

이제 자신만의 스트림 키(Stream Key)를 만들어 스트림 키 입력란에 입력합니다. 기억하기 쉬운 값으로 정하고 따로 기록해 두세요. 보안을 강화하려면 인증 사용(Use authentication) 체크박스를 선택하고 원하는 자격 증명을 추가하면 됩니다.

적용(Apply)을 누른 뒤 확인(OK) 버튼으로 마무리합니다.

이제 스트리밍을 위한 모든 설정이 완료되었습니다. 첫 번째 스트림을 시작하려면 스트리밍 시작(Stream Now) 버튼을 누르세요. 모든 과정이 올바르게 진행되었다면 버튼이 스트리밍 중지(Stop Streaming)로 바뀌고, OBS 창 하단에 스트림의 대역폭 지표가 표시됩니다.

첫 번째 시청자가 되어보기

RTMP를 지원하는 오픈소스 미디어 플레이어는 다양하지만, 그중 가장 잘 알려진 것은 VLC 미디어 플레이어입니다. VLC를 설치하고 실행한 뒤 미디어(Media) 탭을 클릭하고 메뉴에서 네트워크 스트림 열기(Open Network Stream)를 선택합니다.

스트림 키를 준비하셨나요? 스트림 경로를 입력하고 그 끝에 앞서 설정한 스트림 키를 붙이면 됩니다. 형식은 다음과 같습니다:

rtmp://IPaddress/live/SecretKey

재생(Play)을 클릭하면 여러분만의 라이브 스트림 화면을 직접 확인할 수 있습니다.

추가 설정

기본 구축이 완료되었다면, 다음으로 스트리밍 서버 접근 권한 제한과 영상 녹화 및 저장 기능도 고려해 볼 만합니다.

기본 설정에서는 누구나 스트림을 시청할 수 있습니다. 이는 서버를 구축한 본래 목적에 어긋날 수 있습니다. 리눅스 방화벽, .htaccess 파일, 또는 RTMP 모듈에 내장된 접근 제어 기능을 활용해 접근을 제한하는 것이 좋습니다. 어떤 방법을 선택할지는 여러분의 몫입니다.

앞서 소개한 Nginx 설정은 영상 스트리밍만 가능할 뿐 저장은 되지 않습니다. 저장 옵션을 추가하려면 Nginx 설정에서 RTMP 섹션 바로 아래에 스트림 녹화 옵션을 설정하고 콘텐츠를 저장할 위치를 지정하면 됩니다.

Nginx가 쓰기 권한을 가진 기존 경로를 지정하고 다음과 같이 입력합니다:

application live {
live on;
record all;
record_path /var/www/html/recordings;
record_unique on;
}

이것으로 우분투 리눅스를 이용한 라이브 스트리밍 서버 구축에 필요한 모든 과정을 마쳤습니다. 라이브가 아닌 미디어 스트리밍 서버에 더 관심이 있다면 OBS 대신 Plex를 사용하는 것을 추천합니다.