Sådan installeres Squid Proxy på CentOS
Squid er et populært, gratis Linux-program, der giver dig mulighed for at oprette en webproxy til videresendelse. I denne vejledning vil du se, hvordan du installerer Squid på CentOS for at gøre dig
HTTP Live Streaming (HLS) er en meget robust streaming-videoprotokol implementeret af Apple Inc. HLS bruger HTTP-transaktioner, som krydser firewalls, proxyer og kan distribueres gennem CDN'er med lethed. Derfor er denne teknologi i stand til at nå et meget større seerpublikum end RTP eller andre UDP-baserede protokoller. Meget af livestreaming af video online i dag hostes af dyre systemer, som bruger HLS, men de er generelt dyre og kræver mange serverressourcer. Denne vejledning viser dig, hvordan du konfigurerer en meget overkommelig Ubuntu 14.04 VULTR VPS til at lave HLS live streaming-begivenheder ved kun at bruge open source-software.
Det første trin er at læse og opsætte din server i henhold til Vultr Doc " Setup Nginx-RTMP on Ubuntu 14.04 ". Instruktionerne i det dokument var i skrivende stund den mest omfattende for opsætningsfasen. Jeg vil nævne, at du måske ønsker at erstatte "nginx-1.7.5" med "nginx-1.9.4" eller hvad den nyeste version af Nginx er tilgængelig. Det andet forslag er at kompilere Nginx med HTTP-stub-statusmodulet for at give dig selv mulighed for at overvåge, hvor mange live HLS-seere du har senere.
I stedet for at kompilere med:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Brug denne streng i proceduren skitseret i forudsætningsdokumentet:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Eksemplet i denne vejledning vil skabe både "live" og "mobile" (optimerede) streams og vil bruge ffmpeg (installeret i den forrige tutorial) til at generere den bithastighedsjusterede, mobiloptimerede HLS-stream. Eksemplet viser også, hvordan du får serveren til at optage dine livestreams automatisk og giver dig mulighed for at afspille optagelserne som en video on demand (VOD) genafspilningstjeneste.
Opret først de mappestrukturer, der er nødvendige for at holde de levende og mobile HLS-manifester og videofragmenter:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Det er nok en god idé at have din firewall tændt, hvis du ikke allerede har gjort det. Hvis det er tilfældet, skal du tillade trafik ind i de porte, der bruges af Nginx og HLS. Hvis du gerne vil køre uden firewall indtil videre, skal du ignorere ufw-afsnittet nedenfor.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
HLS-streaming kræver en væsentlig anden Nginx-konfiguration fra RTMP-konfigurationen i den første artikel. Rediger din nginx.conf
fil for at bruge følgende ved at erstatte "my-ip" og "my-stream-key" med dine oplysninger. Du kan bruge alt, hvad du vil, til "my-stream-key", det er bare et ord, der er unikt og nyttigt for dig. Du ønsker måske at sikkerhedskopiere din originale konfigurationsfil først, og indsæt derefter mine medfølgende konfigurationsoplysninger i editoren og erstatter alt, hvad der var der:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
Ny nginx.conf:
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
allow play all;
#creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
application live {
allow play all;
live on;
record all;
record_path /video_recordings;
record_unique on;
hls on;
hls_nested on;
hls_path /HLS/live;
hls_fragment 10s;
#creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video
exec ffmpeg -i rtmp://192.168.254.178:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://192.168.254.178:1935/mobile/$;
}
#creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments
application mobile {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /HLS/mobile;
hls_fragment 10s;
}
#allows you to play your recordings of your live streams using a URL like "rtmp://my-ip:1935/vod/filename.flv"
application vod {
play /video_recordings;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name 192.168.254.178;
#creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8"
location /live {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/live;
add_header Cache-Control no-cache;
}
#creates the http-location for our mobile-device HLS stream - "http://my-ip/mobile/my-stream-key/index.m3u8"
location /mobile {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /HLS/mobile;
add_header Cache-Control no-cache;
}
#allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats"
location /stats {
stub_status;
}
#allows us to host some webpages which can show our videos: "http://my-ip/my-page.html"
location / {
root html;
index index.html index.htm;
}
}
}
Tryk på Ctrl + X for at afslutte. Sig "ja" for at gemme ændringerne.
Du kan finde klare instruktioner og eksempler på de mulige variabler i denne nginx.conf
fil, hvis du spørger din yndlingssøgemaskine efter "nginx-rtmp-direktiver". Jeg har brugt nginx-rtmp med HLS i nogle år nu uden at bruge direktiverne "tillad udgivelse" og "afvis udgivelse", og jeg har ikke set nogen tilfælde af folk, der bruger/invaderer mine videoservere. Så jeg medtog ikke disse direktiver her. Læs om og tilføj disse direktiver, hvis du ønsker det.
Efter at have ændret nginx.conf
filen, skal du genstarte Nginx for at bruge den nye konfiguration:
sudo service nginx restart
Hold nøje øje med eventuelle Nginx-fejlmeddelelser og adresser eventuelle fejl, der kan være forårsaget af stavefejl, mappeejerskab eller problemer med tilladelser. Hvis du ikke har nogen fejlmeddelelser, er du klar til at oprette din kodestrøm.
Du skal have en videokoder for at oprette streamen. Jeg bruger OBS (Open Broadcaster Software) - som er open source og fungerer godt for mig. Der er andre løsninger at vælge imellem, som er uden for denne tutorials rammer. Jeg vil ikke dække alt om konfiguration af en RTMP-videokoder. De kræver dog alle nogenlunde de samme inputvariabler. De nøgleindstillinger, du skal indtaste for at bruge min nøjagtige nginx.conf
konfiguration og fungere godt på tværs af de fleste spillere/browsere/platforme, er som følger:
Jeg anbefaler at prøve forskellige indkodere og eksperimentere med dem. Du ønsker måske et bredt billedformat - eller dit kamera (eller andre udsendelsesmaterialer) kan kræve det. Hvis det er tilfældet, skal du sørge for at ændre disse oplysninger i din encoder og også billedformatet, der er angivet i exec-ffmpeg-sektionen af nginx.conf
filen, som jeg har leveret; ellers får du nogle fede videofeeds.
Når din encoder er sat op, kan du teste det hele. Start encoderen med dit webcam eller en slags testfoder kørende på det. Du kan se din udsendelse på dette tidspunkt med VLC-afspiller ved hjælp af URL'er som:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
Disse er til henholdsvis dine primære og dine mobile videostreams. Erstat din IP og stream nøgle i overensstemmelse hermed.
Når du har udsendt din første stream, skal du kontrollere (via ssh eller ftp), at din live-udsendelse blev optaget i /video_recordings
mappen på din Vultr VPS. Du kan også prøve at afspille denne optagede fil i VLC med en URL som:
rtmp://my-ip/vod/filename.flv
Nginx-statistikker er også tilgængelige (med Nginx stub_status). For at se besøgs-/seerstatistik skal du gå til:
http://my-ip/stats
For at se din video på en webside skal du bruge en indlejrbar afspiller. Der er mange indlejrbare afspillere tilgængelige, som vil afspille HLS-video. Jeg har brugt JW Player i nogle år nu, men den gratis version vil ikke spille HLS. Flowplayer og Bitdash af Bitmovin (blandt andre løsninger) er generøse nok til at tilbyde en ikke-kommerciel version af deres spillere gratis, som vil gøre din HLS-stream indlejret på en webside. Til denne artikel har jeg prøvet dem begge og fundet dem begge til at fungere ganske godt med min Vultr/Nginx-baserede videoserver. Jeg vil kort vise, hvordan jeg fik Flowplayer i gang med min testbed-maskine.
Hvis du vil bruge live HLS-streaming på en almindelig, vedvarende eller kommerciel måde, vil jeg opfordre dig til at købe en licens fra Flowplayer eller hvilken spiller du vælger at bruge. Du vil få en spiller, som har færre begrænsninger, flere funktioner og kan mærkes til din organisation. Du får også støtte - hvilket kan være meget vigtigt. Bortset fra Vultr VPS, er dette virkelig den eneste omkostning forbundet med projektet.
Før du gør noget andet, er det vigtigt at tage sig af det, der kaldes "cross-domain" begrænsninger, som ellers ville lukke ned for din mulighed for at streame til en webside/hjemmeside. Opret en crossdomain.xml
fil i din nginx/html
mappe og læg instruktioner i den for at tillade data at flyde mellem domæner:
sudo nano /usr/local/nginx/html/crossdomain.xml
Kopiér først (fra denne side) og indsæt derefter (højreklik) i nano-editor-feltet følgende XML-data:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
Tryk på Ctrl + O for at skrive ud, derefter Ctrl + X for at gemme filen på disken og afslutte.
Jeg fik fat i HTML5 (version 6.0.3) af Flowplayer, som gav mig et antal filer og en mappe, når den blev pakket ud. Jeg uploadede alle filerne og mappen til en undermappe af Nginx/HTML-rodmappen, som jeg kaldte "flowplayer". Den nøjagtige vej var /usr/local/nginx/html/flowplayer
.
For at teste vores video, når den er indlejret på en webside, skal du oprette et par HTML-filer i roden af Nginx/HTML-mappen ved hjælp af nano og udfylde dem med følgende indhold.
Fil:
sudo nano /usr/local/nginx/html/hls.html
HTML-kode:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
</head>
<body>
640x480 664kbps (live) Desktop Browsers<br>
<div style="width:640px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
<br><br>
480x360 464kbps (mobile) Mobile Browsers <br>
<div style="width:480px;" class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
</video>
</div>
</body>
Fil:
sudo nano /usr/local/nginx/html/hls_progressive.html
HTML-kode:
<!doctype html>
<head>
<link rel="stylesheet" href="#">
<style> .flowplayer { width: 640px; } </style>
</head>
<body>
<div class="flowplayer" data-swf="flowplayer/flowplayer.swf" data-ratio="0.75">
<video>
<source type="application/x-mpegurl" src="">
<source type="application/x-mpegurl" src="">
</video>
</div>
<br>
</body>
Sørg for at erstatte "my-ip" og "my-stream-key" med dine data.
Du skal erstatte flowplayer/skin/functional.css
"#"-tegnet i stilarket med stien href="#"
. Selvstudiesoftwaren fjerner stien. Du skal udfylde en URL i src=""
del - det bliver skrabet ud af tutorial software, brug http://my-ip/live/my-stream-key/index.m3u8
og http://my-ip/mobile/my-stream-key/index.m3u8
hhv. Du skal også tilføje script- src
tags i hovedet for både jquery-1.11.2.min.js
og for flowplayer.min.js
. Mærkerne bliver fjernet af tutorial-softwaren. Du kan finde ud af, hvordan du laver disse tags, ved at se på example html
filen, der følger med Flowplayer-sættet.
Start encoderen med dit webcam eller en slags testfoder kørende på det. Du kan se din udsendelse i en browser ved hjælp af følgende URL'er:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Den første side viser simpelthen hver af dine streams - den primære og den mobile platform. Du vil være i stand til at starte dem begge og se dem. Du vil bemærke, at den mobile platformstrøm er mindre i størrelse. Disse trin er kun for at sikre, at alt kører.
Den anden side viser en enkelt strøm. Men det er sat op på en måde, som kaldes "progressiv streaming". Hvad dette betyder er, at når en seer afspiller videoen, forsøger både serveren og afspilleren at give seeren streamen med høj bithastighed og høj kvalitet, hvis seernes forbindelse kan opretholde den. Hvis deres forbindelse er dårlig, og den ikke kan opretholde forbindelsen, ruller den ned til at vise streamingen med lavere bithastighed (mobil), som er 200 kbps lavere i båndbredde. Hvis du ville, kunne du oprette mere graduerede, progressive streams med ffmpeg og konfigurere dem ved hjælp af mit eksempel.
Jeg har testet denne konfiguration på en enkelt kerne, 1 GB Vultr VPS, og jeg fandt ud af, at med en enkelt livestream, plus den transvurderede mobilstream, den skaber med ffmpeg, var cpu-bruget mindre end 35 %, og det havde kun forbrugt 100 MB min 1GB ram. Det er nu en meget effektiv opsætning.
Hvis du planlægger at streame video, som er meget større i pixeldimensioner end SD, kan du opleve, at du skal bruge en mere kraftfuld VPS. Jeg var nysgerrig efter dette og kørte min mainstream op til 1280x960 pixels og 2Mbps - hvilket satte ekstra belastning på tingene. Men VPS'en brugte stadig kun 50% CPU, og hukommelsesforbruget forblev på 100MB. Jeg tilføjede et dusin seere/browsere, og det gjorde næsten ingen forskel i belastningen på VPS'en - kun den brugte båndbredde steg. Jeg er sikker på, at oprettelse af yderligere transvurderede streams med ffmpeg ville fortsætte med at belaste systemet yderligere.
Jeg har brugt denne type server i produktionsmiljøer med mellem 50 og 100 samtidige brugere og fandt ud af, at ressourceforbruget steg meget lidt med stigende seerforbindelser. Eksperimenter med det. Men jeg tror, at de fleste brugere ville være glade for at bruge en single-core, 1GB VPS. Nyd din nye HLS-streamingserver!
Squid er et populært, gratis Linux-program, der giver dig mulighed for at oprette en webproxy til videresendelse. I denne vejledning vil du se, hvordan du installerer Squid på CentOS for at gøre dig
Memcached er et højtydende databasesystem, der kan hjælpe med at superlade din applikation. Den er meget hurtig, da den ikke skriver til disken, men i stedet t
Fail2ban er et program, der overvåger login-aktivitet på din server og blokerer stødende IP-adresser. Som standard blokerer den IP-adresser i 10 minutter
Bruger du et andet system? Red5 er en open source medieserver implementeret i Java, der giver dig mulighed for at køre Flash multi-bruger applikationer såsom live streamin
Bruger du et andet system? Vanilla forum er en open source forumapplikation skrevet i PHP. Det er en fuldt tilpasselig, nem at bruge og understøtter ekstern
Bruger du et andet system? Tiny Tiny RSS Reader er en gratis og open source selv-hostet webbaseret nyhedsfeed (RSS/Atom) læser og aggregator, designet til at allo
Using a Different System? Wiki.js is a free and open source, modern wiki app built on Node.js, MongoDB, Git and Markdown. Wiki.js source code is publicl
Bruger du et andet system? Microweber er en open source træk og slip CMS og online shop. Microweber-kildekoden er hostet på GitHub. Denne guide vil vise dig
Bruger du et andet system? Microweber er en open source træk og slip CMS og online shop. Microweber-kildekoden er hostet på GitHub. Denne guide vil vise dig
Bruger du et andet system? Mattermost er et open source, selvhostet alternativ til Slack SAAS-meddelelsestjenesten. Med andre ord, med Mattermost er du ca
Bruger du et andet system? DotCMS er et open source, enterprise-grade content management system skrevet i Java. Den indeholder næsten alle nødvendige funktioner
Bruger du et andet system? Pagekit 1.0 CMS er et smukt, modulært, udvideligt og let, gratis og open source Content Management System (CMS) med
Bruger du et andet system? BigTree CMS 4.2 er et hurtigt og let, gratis og open source, enterprise-grade content management system (CMS) med omfattende
Plesk-kontrolpanelet har en meget flot integration til Lets Encrypt. Lets Encrypt er en af de eneste SSL-udbydere, der udleverer certifikater komplet
Lets Encrypt er en certifikatmyndighed dedikeret til at levere SSL-certifikater gratis. cPanel har bygget en pæn integration, så du og din klient
Bruger du et andet system? Concrete5 er et open source CMS, som tilbyder mange karakteristiske og nyttige funktioner til at hjælpe redaktører med at producere indhold nemt og
Bruger du et andet system? GoAccess er en open source weblog-analysator. Du kan bruge det til analyse af logs på realtidsbasis i enten terminalen eller
YOURLS (Your Own URL Shortener) er en open source URL-forkortelse og dataanalyseapplikation. I denne artikel vil vi dække installationsprocessen
Denne artikel er en del af en 2-delt serie om installation og konfiguration af Nagios på Ubuntu 14.04. Del 1: Nagios Server Del 2: Oversigt over fjernvært Nagio
Laravel GitScrum eller GitScrum er et open source-produktivitetsværktøj designet til at hjælpe udviklingsteams med at implementere Scrum-metoden på en måde, der ligner t.
Kunstig intelligens er ikke i fremtiden, det er her lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.
Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.
Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.
Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.
Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...
Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.
Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af dataene. Denne blog dækker udviklingen af datalagring på basis af en infografik.
Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.
I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.
For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af mac-maskiner. Læs denne artikel for at lære mere