정보실

웹학교

정보실

기타 Linux로 자신 만의 비디오 스트리밍 서버 만들기

본문

Linux 또는 BSD 운영 체제에서 기본 라이브 스트리밍 서버를 설정하십시오.


라이브 비디오 스트리밍은 매우 인기가 있으며 여전히 성장하고 있습니다. 아마존 트 위치 (Amazon 's Twitch) 및 구글 유튜브 (Google YouTube)와 같은 플랫폼에는 수많은 라이브 및 녹화 미디어를 스트리밍 하고 소비하는 수백만 명의 사용자가 있습니다. 이러한 서비스는 종종 무료로 사용할 수 있지만 계정이 있어야 하며 일반적으로 광고 뒤에 콘텐츠를 보유해야 합니다. 일부 사람들은 비디오를 대중에게 제공 할 필요가 없거나 컨텐츠를 보다 세밀하게 제어하기를 원합니다. 고맙게도 오픈 소스 소프트웨어의 힘으로 누구나 라이브 스트리밍 서버를 설정할 수 있습니다.


시작하기 


이 튜토리얼에서는 Linux 또는 BSD 운영 체제를 사용하여 기본 라이브 스트리밍 서버를 설정하는 방법을 설명합니다.


이것은 시스템 요구 사항에 대한 불가피한 질문으로 이어집니다. 라이브 스트리밍과 관련된 많은 변수가 있으므로 다음과 같이 달라질 수 있습니다.


  • 스트림 품질 : 고화질로 스트리밍 하시겠습니까? 아니면 표준 정의가 필요에 맞습니까?
  • 시청률 : 동영상 시청자 수는 몇 명입니까?
  • 스토리지 : 비디오 스트림의 사본을 보관할 계획입니까?
  • 액세스 : 스트림이 비공개이거나 세상에 공개됩니까?

시스템 요구 사항과 관련하여 정해진 규칙은 없으므로 필요에 가장 적합한 것을 실험하고 찾아 보는 것이 좋습니다. 4GB RAM, 20GB 하드 드라이브 및 단일 Intel i7 프로세서 코어가 있는 가상 시스템에 서버를 설치했습니다.


이 프로젝트는 RTMP (Real-Time Messaging Protocol)를 사용하여 오디오 및 비디오 스트리밍을 처리합니다. 사용 가능한 다른 프로토콜이 있지만 RTMP를 광범위하게 지원하므로 RTMP를 선택했습니다. WebRTC와 같은 공개 표준이 더 호환 될수록 해당 경로를 권장합니다.


"실시간"이 항상 즉각적인 것은 아니라는 것을 아는 것도 매우 중요합니다. 비디오 스트림은 인코딩, 전송, 버퍼링 및 표시되어야 하는데 종종 지연이 추가됩니다. 생성하는 스트림 유형 및 속성에 따라 지연 시간을 줄이거나 늘릴 수 있습니다.


Linux 서버 설정 


Linux 배포판을 여러 가지 사용할 수 있지만 우분투를 선호하므로 운영 체제 용 우분투 서버 에디션을 다운로드했습니다. 서버에서 GUI (그래픽 사용자 인터페이스)를 사용하려면 Ubuntu Desktop 또는 다양한 기능 중 하나를 사용하십시오. 그런 다음 컴퓨터 또는 가상 컴퓨터에서 Ubuntu 설치 관리자를 시작하고 내 환경에 가장 적합한 설정을 선택했습니다. 아래는 내가 취한 단계입니다.


참고 :이 서버는 서버이므로 일부 정적 네트워크 설정을 원할 것입니다.


Ubuntu profile setup 


설치 프로그램이 완료되고 시스템이 재부팅 되면 멋진 우분투 시스템이 나타납니다. 새로 설치된 운영 체제와 마찬가지로 사용 가능한 모든 업데이트를 설치하십시오.


sudo apt update
sudo apt upgrade 


이 스트리밍 서버는 매우 강력하고 다양한 Nginx 웹 서버를 사용하므로 다음을 설치해야 합니다.


sudo apt install nginx 


그런 다음 Nginx가 미디어 스트림을 처리 할 수 ​​있도록 RTMP 모듈을 가져와야 합니다.


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


미디어 스트림을 수락하고 전달할 수 있도록 웹 서버 구성을 조정하십시오.


sudo nano /etc/nginx/nginx.conf 


구성 파일의 맨 아래로 스크롤 하여 다음 코드를 추가하십시오.


rtmp {
        server {
                listen 1935;
                chunk_size 4096;

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


Nginx configuration 


구성을 저장하십시오. 저는 이단자이므로 구성 파일 편집에 Nano를 사용합니다. Nano에서는 Ctrl + X, Y를 누른 다음 Enter를 눌러 구성을 저장할 수 있습니다.


작동하는 스트리밍 서버를 생성 할 수 있는 최소 구성입니다. 나중에 이 구성에 추가 할 것입니다. 그러나 이것은 훌륭한 출발점입니다.


그러나 첫 번째 스트림을 시작하기 전에 새로운 구성으로 Nginx를 다시 시작해야 합니다.


sudo systemctl restart nginx 


BSD 서버 설정 


"beastie"설득력이 있다면 스트리밍 서버를 설치하고 실행하는 것도 매우 쉽습니다.


FreeBSD 웹 사이트를 방문하여 최신 릴리스를 다운로드하십시오. 컴퓨터 또는 가상 머신에서 FreeBSD 설치 프로그램을 시작하고 초기 단계를 수행하고 환경에 가장 적합한 설정을 선택하십시오. 이것은 서버이므로 일부 정적 네트워크 설정을 원할 것입니다.


인스톨러가 끝나고 시스템이 재부팅 된 후, 새로운 FreeBSD 시스템이 생길 것입니다. 새로 설치된 다른 시스템과 마찬가지로 모든 것을 업데이트하고 싶을 것입니다 (이 단계부터 루트로 로그인했는지 확인하십시오).


pkg update
pkg upgrade 


구성 파일 편집을 위해 Nano를 설치합니다.


pkg install nano 


이 스트리밍 서버는 매우 강력하고 다양한 Nginx 웹 서버를 사용합니다. FreeBSD가 자랑하는 우수한 포트 시스템을 사용하여 Nginx를 구축 할 수 있습니다.


먼저 포트 트리를 업데이트하십시오.


portsnap fetch
portsnap extract 


Nginx 포트 디렉토리를 찾으십시오.


cd /usr/ports/www/nginx 


다음을 실행하여 Nginx 빌드를 시작하십시오.


make install 


Nginx 빌드에 포함 할 모듈을 묻는 화면이 나타납니다. 이 프로젝트에는 RTMP 모듈을 추가해야 합니다. RTMP 모듈이 선택 될 때까지 아래로 스크롤하고 스페이스를 누릅니다. 그런 다음 Enter를 눌러 나머지 빌드 및 설치를 진행하십시오.


Nginx의 설치가 완료되면 스트리밍 목적으로 구성 할 차례입니다.


먼저, 시스템을 부팅 할 때 Nginx 서버가 시작되도록 /etc/rc.conf에 항목을 추가하십시오 :


nano /etc/rc.conf 


이 텍스트를 파일에 추가하십시오.


nginx_enable="YES" 


Nginx configuration 


다음으로 Nginx가 컨텐츠를 제공 할 웹 루트 디렉토리를 생성하십시오. 나는 나의 시내를 부른다 :


cd /usr/local/www/
mkdir stream
chmod -R 755 stream/ 


스트림 디렉토리를 만들었으므로 구성 파일을 편집하여 Nginx를 구성하십시오.


nano /usr/local/etc/nginx/nginx.conf 


파일 맨 위에 스트리밍 모듈을 로드하십시오.


load_module /usr/local/libexec/nginx/ngx_stream_module.so;
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so; 


Loading streaming modules 



서버 섹션에서 웹 루트 위치를 이전에 작성한 위치와 일치하도록 변경하십시오.


Location / {
root /usr/local/www/stream
} 


Changing webroot location 


마지막으로 RTMP 설정을 추가하면 Nginx가 미디어 스트림을 처리하는 방법을 알 수 있습니다.


rtmp {
        server {
                listen 1935;
                chunk_size 4096;

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



구성을 저장하십시오. Nano에서는 Ctrl + X, Y를 누른 다음 Enter를 눌러 이를 수행 할 수 있습니다.


보다시피, 이것은 작동하는 스트리밍 서버를 생성 할 수 있는 최소한의 구성입니다. 나중에 이 구성에 추가 할 것입니다. 그러나 이것은 훌륭한 시작점을 제공합니다.


그러나 첫 번째 스트림을 시작하기 전에 새로운 설정으로 Nginx를 다시 시작해야 합니다.


service nginx restart 


스트리밍 소프트웨어 설정 


OBS로 방송 


서버가 비디오 스트림을 수신 할 준비가 되었으므로 스트리밍 소프트웨어를 설정할 차례입니다. 이 자습서는 강력한 오픈 소스 OBS (Open Broadcast Studio)를 사용합니다.


OBS 웹 사이트로 이동하여 운영 체제 용 빌드를 찾아 설치하십시오. OBS가 시작되면 하드웨어에 가장 적합한 설정으로 OBS를 구성하는 데 도움이 되는 처음 실행 마법사가 나타납니다.


OBS auto-configuration wizard 


OBS는 소스를 제공하지 않았기 때문에 아무것도 캡처하지 않습니다. 이 자습서에서는 스트림을 위해 데스크탑을 캡처합니다. 소스에서 + 버튼을 클릭하고 화면 캡처를 선택한 다음 캡처 할 데스크톱을 선택하십시오.


확인을 클릭하면 OBS가 데스크탑을 미러링 하는 것을 볼 수 있습니다.


이제 새로 구성된 비디오 스트림을 서버로 보낼 차례입니다. OBS에서 파일> 설정을 클릭하십시오. 스트림 섹션을 클릭하고 스트림 유형을 사용자 지정 스트리밍 서버로 설정하십시오.


URL 상자에 접두사 rtmp://와 스트리밍 서버의 IP 주소, /live를 차례로 입력하십시오. 예를 들면 다음과 같습니다. rtmp://IP-ADDRESS/live.


다음으로 스트림을 보는 데 필요한 특수 식별자인 스트림 키를 입력 할 수 있습니다. 스트림 키 상자에 원하는 키를 입력하십시오.


Stream key setup 


적용을 클릭 한 다음 확인을 클릭하십시오.


이제 OBS가 스트림을 서버로 보내도록 구성되었으므로 첫 번째 스트림을 시작할 수 있습니다. 스트리밍 시작을 클릭하십시오.


모든 것이 작동하면 버튼이 스트리밍 중지로 바뀌고 일부 대역폭 메트릭이 OBS 하단에 나타납니다.


OBS stream metrics 


오류가 발생하면 맞춤법 오류가 있는지 OBS의 스트림 설정을 다시 확인하십시오. 모든 것이 좋아 보인다면 작동하지 못하게 하는 또 다른 문제가 있을 수 있습니다.


스트림 보기 


아무도 보고 있지 않으면 라이브 비디오는 그리 좋지 않으므로 첫 번째 뷰어가 되십시오!


RTMP를 지원하는 수많은 오픈 소스 미디어 플레이어가 있지만 가장 잘 알려진 것은 VLC 미디어 플레이어 일 것입니다.


VLC를 설치하고 시작한 후 미디어> 네트워크 스트림 열기를 클릭하여 스트림을 여십시오. OBS에서 설정 한 스트림 키를 추가하여 스트림 경로를 입력 한 다음 재생을 클릭하십시오. 예를 들면 다음과 같습니다. rtmp : // IP-ADDRESS / live / SECRET-KEY.


당신은 지금 당신의 자신의 라이브 비디오 스트림을 보고 있어야 합니다!


Live video in VLC 


다음에 갈 곳? 


이것은 매우 간단한 설정으로 당신을 땅에서 벗어날 수 있습니다. 사용할 다른 두 가지 기능은 다음과 같습니다.


  • 액세스 제한 : 다음 단계는 기본 설정을 통해 누구나 서버에 대한 스트리밍을 허용하므로 서버에 대한 액세스를 제한하는 것입니다. 운영 체제 방화벽, .htaccess 파일 또는 RTMP 모듈의 내장 액세스 제어 사용과 같은 다양한 설정 방법이 있습니다.
  • 녹화 스트림 :이 간단한 Nginx 구성은 비디오를 스트리밍하고 저장하지는 않지만 추가하기 쉽습니다. Nginx 설정의 RTMP 섹션에서 녹화 옵션 및 비디오를 저장할 위치를 설정하십시오. 설정 한 경로가 존재하고 Nginx가 해당 경로에 쓸 수 있는지 확인하십시오.

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


라이브 스트리밍의 세계는 끊임없이 발전하고 있으며, 고급 사용에 관심이 있다면 인터넷에 떠 다니는 다른 훌륭한 리소스가 많이 있습니다. 행운과 행복한 스트리밍!



페이지 정보

조회 25회 ]  작성일20-06-25 15:19

웹학교