Opprette en Jekyll-blogg på Ubuntu 16.04
Bruker du et annet system? Jekyll er et flott alternativ til WordPress for blogging eller deling av innhold. Det krever ingen databaser, og det er veldig enkelt, jeg
HTTP Live Streaming (HLS) er en veldig robust videoprotokoll for streaming implementert av Apple Inc. HLS bruker HTTP-transaksjoner som krysser brannmurer, proxyer og enkelt kan distribueres gjennom CDN-er. Derfor er denne teknologien i stand til å nå et mye større seerpublikum enn RTP eller andre UDP-baserte protokoller. Mye av livestreaming av video på nettet i dag er vert for dyre systemer som bruker HLS, men de er generelt dyre og krever mye serverressurser. Denne opplæringen vil vise deg hvordan du setter opp en svært rimelig Ubuntu 14.04 VULTR VPS for å gjøre HLS live streaming-arrangementer med kun åpen kildekode-programvare.
Det første trinnet er å lese og sette opp serveren din i henhold til Vultr Doc " Setup Nginx-RTMP on Ubuntu 14.04 ". Instruksjonene i det dokumentet var de mest omfattende for oppsettstadiet, i skrivende stund. Jeg vil nevne at du kanskje ønsker å erstatte "nginx-1.7.5" med "nginx-1.9.4" eller hva den nyeste versjonen av Nginx er tilgjengelig. Det andre forslaget er å kompilere Nginx med HTTP-stubstatusmodulen for å gi deg selv muligheten til å overvåke hvor mange live HLS-seere du har senere.
I stedet for å kompilere med:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Bruk denne strengen i prosedyren som er skissert i forutsetningsdokumentet:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Eksemplet i denne opplæringen vil lage både "live" og "mobil" (optimalisert) strømmer og vil bruke ffmpeg (installert i forrige opplæring) for å generere den bithastighetsjusterte, mobiloptimerte HLS-strømmen. Eksemplet vil også vise hvordan du får serveren til å ta opp live-strømmene dine automatisk og lar deg spille av opptakene som en video on demand (VOD) replay-tjeneste.
Først oppretter du mappestrukturene som er nødvendige for å holde de levende og mobile HLS-manifestene og videofragmentene:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Det er sannsynligvis en god idé å ha brannmuren slått på hvis du ikke allerede har gjort det. I så fall må du tillate trafikk inn i portene som brukes av Nginx og HLS. Hvis du vil kjøre uten brannmuren foreløpig, ignorer ufw-delen nedenfor.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
HLS-streaming krever en vesentlig forskjellig Nginx-konfigurasjon fra RTMP-konfigurasjonen i den første artikkelen. Rediger nginx.conf
filen din for å bruke følgende, og bytt ut "my-ip" og "my-stream-key" med informasjonen din. Du kan bruke alt du vil for "my-stream-key", det er bare et ord som er unikt og nyttig for deg. Det kan være lurt å sikkerhetskopiere den opprinnelige konfigurasjonsfilen først, og deretter lime inn min medfølgende konfigurasjonsinformasjon i redigeringsprogrammet, og erstatte alt som 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;
}
}
}
Trykk Ctrl + X for å avslutte. Si "ja" for å lagre endringene.
Du kan finne klare instruksjoner og eksempler på mulige variabler i denne nginx.conf
filen hvis du spør etter "nginx-rtmp-direktiver" i din favorittsøkemotor. Jeg har brukt nginx-rtmp med HLS i noen år nå, uten å bruke "allow publish" og "deny publish"-direktivene, og jeg har sett null tilfeller av folk som bruker/invaderer videoserverne mine. Så jeg tok ikke med disse direktivene her. Les om og legg til disse direktivene hvis du ønsker det.
Etter å ha endret nginx.conf
filen, må du starte Nginx på nytt for å bruke den nye konfigurasjonen:
sudo service nginx restart
Se nøye etter eventuelle Nginx-feilmeldinger og adresser eventuelle feil som kan ha vært forårsaket av stavefeil, mappeeierskap eller problemer med tillatelser. Hvis du ikke har noen feilmeldinger, er du klar til å lage kodestrømmen.
Du må ha en videokoder for å lage strømmen. Jeg bruker OBS (Open Broadcaster Software) - som er åpen kildekode og fungerer bra for meg. Det er andre løsninger å velge mellom, som ligger utenfor denne veiledningen. Jeg vil ikke dekke alt om å konfigurere en RTMP-videokoder. De krever alle omtrent de samme inngangsvariablene. Nøkkelinnstillingene du må legge inn for å bruke min eksakte nginx.conf
konfigurasjon og fungere godt på tvers av de fleste spillere/nettlesere/plattformer er som følger:
Jeg anbefaler å prøve forskjellige kodere og eksperimentere med dem. Du kan ønske deg et bredt sideforhold - eller kameraet (eller andre kringkastingsmaterialer) kan kreve det. I så fall, sørg for å endre denne informasjonen i koderen din og også sideforholdet oppført i exec-ffmpeg-delen av nginx.conf
filen som jeg har levert; ellers får du noen klønete videofeeder.
Når koderen er satt opp, kan du teste alt. Start koderen med webkameraet ditt eller en slags testfôr som kjører på den. Du kan se sendingen din på dette tidspunktet med VLC-spiller ved å bruke URL-er som:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
These are for your main and your mobile video streams, respectively. Substitute your IP and stream key accordingly.
After you've successfully broadcasted your first stream check (via ssh or ftp) that your live broadcast was recorded in the /video_recordings
folder on your Vultr VPS. You can also try playing this recorded file in VLC with a URL like:
rtmp://my-ip/vod/filename.flv
Nginx stats are also available (with Nginx stub_status). To view visitor/viewer stats, access:
http://my-ip/stats
For å se videoen din på en nettside trenger du en innebygd spiller. Det er mange innebygde spillere tilgjengelig som vil spille av HLS-video. Jeg har brukt JW Player i noen år nå, men gratisversjonen vil ikke spille HLS. Flowplayer og Bitdash av Bitmovin (blant andre løsninger) er sjenerøse nok til å tilby en ikke-kommersiell versjon av spillerne sine gratis som vil gjengi HLS-strømmen din innebygd i en nettside. For denne artikkelen har jeg prøvd dem begge og funnet at de begge fungerer ganske bra med min Vultr/Nginx-baserte videoserver. Jeg vil kort vise hvordan jeg fikk Flowplayer i gang med testbed-maskinen min.
Hvis du skal bruke direkte HLS-streaming på en vanlig, vedvarende eller kommersiell måte, vil jeg oppfordre deg til å kjøpe en lisens fra Flowplayer eller hvilken spiller du velger å bruke. Du vil få en spiller som har færre begrensninger, flere funksjoner og som kan merkes til din organisasjon. Du vil også få støtte - noe som kan være veldig viktig. Bortsett fra Vultr VPS, er dette egentlig den eneste kostnaden forbundet med prosjektet.
Før du gjør noe annet, er det viktig å ta vare på det som kalles "cross-domain"-restriksjoner, som ellers ville stengt ned muligheten for å strømme til en nettside/nettside. Lag en crossdomain.xml
fil i nginx/html
mappen din og legg instruksjoner i den for å la data flyte mellom domener:
sudo nano /usr/local/nginx/html/crossdomain.xml
Kopier først (fra denne siden) og lim deretter inn (høyreklikk) i nanoredigeringsfeltet 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>
Trykk Ctrl + O for å skrive ut, deretter Ctrl + X for å lagre filen på disk og avslutte.
Jeg tok tak i HTML5 (versjon 6.0.3) av Flowplayer som ga meg en rekke filer og en mappe når den ble pakket ut. Jeg lastet opp alle filene og mappen til en undermappe av Nginx/HTML-rotmappen som jeg kalte "flowplayer". Den nøyaktige veien var /usr/local/nginx/html/flowplayer
.
For å teste videoen vår når den er innebygd i en nettside, lag et par HTML-filer i roten av Nginx/HTML-mappen ved å bruke nano og fyll dem med følgende innhold.
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>
Pass på å erstatte "my-ip" og "my-stream-key" med dataene dine.
Du må erstatte flowplayer/skin/functional.css
"#"-tegnet i stilarket med banen href="#"
. Opplæringsprogramvaren fjerner banen. Du må fylle inn en URL i src=""
delen - den fjernes av opplæringsprogramvaren, bruk http://my-ip/live/my-stream-key/index.m3u8
og http://my-ip/mobile/my-stream-key/index.m3u8
henholdsvis. Du må også legge til skriptkoder src
i hodet for både jquery-1.11.2.min.js
og for flowplayer.min.js
. Taggene blir fjernet av opplæringsprogramvaren. Du kan finne ut hvordan du lager disse taggene ved å se på example html
filen som følger med Flowplayer-settet.
Start koderen med webkameraet ditt eller en slags testfôr som kjører på den. Du kan se sendingen din i en nettleser ved å bruke følgende nettadresser:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Den første siden viser ganske enkelt hver av strømmene dine - den viktigste og den mobile plattformen. Du vil kunne starte dem begge og se dem. Du vil legge merke til at mobilplattformstrømmen er mindre i størrelse. Disse trinnene er bare for å sikre at alt kjører.
Den andre siden viser en enkelt strøm. Men det er satt opp på en måte som kalles «progressiv streaming». Hva dette betyr er at når en seer spiller av videoen, prøver både serveren og spilleren å gi seeren strømmen med høy bithastighet og høy kvalitet hvis seerforbindelsen kan opprettholde den. Hvis tilkoblingen deres er dårlig og den ikke kan opprettholde tilkoblingen, ruller den ned til å vise strømmen med lavere bithastighet (mobil) som er 200 kbps lavere i båndbredde. Hvis du ønsket, kan du lage mer graderte, progressive strømmer med ffmpeg og konfigurere dem ved å bruke eksemplet mitt.
Jeg har testet denne konfigurasjonen på en enkelt kjerne, 1 GB Vultr VPS, og jeg fant ut at med en enkelt live-stream, pluss den transvurderte mobilstrømmen den oppretter med ffmpeg, var cpu-bruken mindre enn 35 % og den hadde kun forbrukt 100 MB min 1GB ram. Nå er det et veldig effektivt oppsett.
Hvis du planlegger å streame video som er mye større i pikseldimensjoner enn SD, kan du finne ut at du må bruke en kraftigere VPS. Jeg var nysgjerrig på dette og kjørte hovedstrømmen min opp til 1280x960 piksler og 2Mbps - noe som la ekstra belastning på ting. Men VPS-en brukte fortsatt bare 50 % CPU og minnebruken holdt seg på 100 MB. Jeg la til et dusin seere/nettlesere, og det gjorde nesten ingen forskjell i belastningen på VPS-en – bare båndbredden som ble brukt gikk opp. Jeg er sikker på at å lage flere transvurderte strømmer med ffmpeg vil fortsette å legge ekstra belastning på systemet.
Jeg har brukt denne typen server i produksjonsmiljøer med mellom 50 og 100 samtidige brukere og funnet ut at ressursbruken økte veldig lite med økende seertilkoblinger. Eksperimenter med det. Men jeg tror at de fleste brukere ville vært fornøyd med å bruke en enkeltkjerne, 1 GB VPS. Nyt din nye HLS-streamingserver!
Bruker du et annet system? Jekyll er et flott alternativ til WordPress for blogging eller deling av innhold. Det krever ingen databaser, og det er veldig enkelt, jeg
Squid er et populært, gratis Linux-program som lar deg lage en webproxy for videresending. I denne veiledningen vil du se hvordan du installerer Squid på CentOS for å gjøre deg om
Memcached er et databasesystem med høy ytelse som kan hjelpe deg med å overlade applikasjonen din. Den er veldig rask siden den ikke skriver til disken, men i stedet t
Introduksjon InfluxDB er en åpen kildekode, distribuert, tidsseriedatabase uten eksterne avhengigheter. Ja, du leser ingen eksterne avhengigheter par
Fail2ban er et program som overvåker påloggingsaktivitet på serveren din og blokkerer støtende IP-adresser. Som standard vil den blokkere IP-adresser i 10 minutter
Bruker du et annet system? Red5 er en åpen kildekode medieserver implementert i Java som lar deg kjøre Flash flerbrukerapplikasjoner som live streamin
Bruker du et annet system? Vanilla forum er en åpen kildekode-forumapplikasjon skrevet i PHP. Det er en fullt tilpassbar, enkel å bruke og støtter ekstern
Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere
Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere
Bruker du et annet system? Tiny Tiny RSS Reader er en gratis og åpen kildekode selvhostet nettbasert nyhetsfeed (RSS/Atom) leser og aggregator, designet for å allo
Bruker du et annet system? Gitea er et alternativt åpen kildekode, selvdrevet versjonskontrollsystem drevet av Git. Gitea er skrevet på Golang og er
Bruker du et annet system? Wiki.js er en gratis og åpen kildekode, moderne wiki-app bygget på Node.js, MongoDB, Git og Markdown. Wiki.js kildekode er offentlig
Bruker du et annet system? Gitea er et alternativt, selvdrevet versjonskontrollsystem med åpen kildekode drevet av git. Gitea er skrevet på Golang og er
Bruker du et annet system? Thelia er et åpen kildekodeverktøy for å lage e-business-nettsteder og administrere nettinnhold skrevet i PHP. Thelia kildekode i
Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, gratis og åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i
Bruker du et annet system? Mattermost er et åpen kildekode, selvdrevet alternativ til Slack SAAS-meldingstjenesten. Med andre ord, med Mattermost kan du ca
Bruker du et annet system? Pagekit 1.0 CMS er et vakkert, modulært, utvidbart og lett, gratis og åpen kildekode Content Management System (CMS) med
Bruker du et annet system? BigTree CMS 4.2 er et raskt og lett, gratis og åpen kildekode, enterprise-grade content management system (CMS) med omfattende
Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i PHP. Det jeg
Bruker du et annet system? Concrete5 er et åpen kildekode CMS som tilbyr mange karakteristiske og nyttige funksjoner for å hjelpe redaktører med å produsere innhold enkelt og
Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.
Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.
Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.
Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.
Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...
Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.
Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.
Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.
I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.
Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer