Skapa en Jekyll-blogg på Ubuntu 16.04
Använder du ett annat system? Jekyll är ett bra alternativ till WordPress för att blogga eller dela innehåll. Det kräver inga databaser och det är väldigt enkelt i
HTTP Live Streaming (HLS) är ett mycket robust protokoll för strömmande video som implementerats av Apple Inc. HLS använder HTTP-transaktioner som passerar brandväggar, proxyservrar och kan distribueras via CDN:er med lätthet. Därför kan denna teknik nå en mycket större tittarpublik än RTP eller andra UDP-baserade protokoll. Mycket av den liveströmmande videon online idag är värd för dyra system som använder HLS, men de är i allmänhet dyra och kräver mycket serverresurser. Den här handledningen kommer att visa dig hur du ställer in en mycket prisvärd Ubuntu 14.04 VULTR VPS för att göra HLS livestreaming-evenemang med endast öppen källkod.
Det första steget är att läsa och ställa in din server enligt Vultr Doc " Setup Nginx-RTMP on Ubuntu 14.04 ". Instruktionerna i det dokumentet var i skrivande stund de mest omfattande för installationsstadiet. Jag skulle vilja nämna att du kanske vill ersätta "nginx-1.7.5" med "nginx-1.9.4" eller vad den senaste versionen av Nginx är tillgänglig. Det andra förslaget är att kompilera Nginx med HTTP-stubbstatusmodulen för att ge dig själv möjlighet att övervaka hur många live HLS-tittare du har senare.
Istället för att kompilera med:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Använd denna sträng i proceduren som beskrivs i förutsättningsdokumentet:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Exemplet i denna handledning kommer att skapa både "live" och "mobila" (optimerade) strömmar och kommer att använda ffmpeg (installerat i föregående handledning) för att generera den bithastighetsjusterade, mobiloptimerade HLS-strömmen. Exemplet visar också hur du får servern att spela in dina liveströmmar automatiskt och låter dig spela upp inspelningarna som en video on demand (VOD) replay-tjänst.
Skapa först de mappstrukturer som krävs för att hålla live och mobila HLS-manifester och videofragment:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Det är förmodligen en bra idé att ha din brandvägg påslagen om du inte redan har gjort det. Om så är fallet måste du tillåta trafik till portarna som används av Nginx och HLS. Om du vill köra utan brandväggen för tillfället, ignorera avsnittet ufw nedan.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
HLS-strömning kräver en väsentligt annorlunda Nginx-konfiguration från RTMP-konfigurationen i den första artikeln. Redigera din nginx.conf
fil för att använda följande, ersätt "my-ip" och "my-stream-key" med din information. Du kan använda vad du vill för "my-stream-key", det är bara ett ord som är unikt och användbart för dig. Du kanske vill säkerhetskopiera din ursprungliga konfigurationsfil först, klistra sedan in min medföljande konfigurationsinformation i redigeraren och ersätta allt som fanns där:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
Nytt 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;
}
}
}
Tryck på Ctrl + X för att avsluta. Säg "ja" för att spara ändringarna.
Du kan hitta tydliga instruktioner och exempel på möjliga variabler i den här nginx.conf
filen om du frågar din favoritsökmotor efter "nginx-rtmp-direktiv". Jag har använt nginx-rtmp med HLS i några år nu, utan att använda direktiven "tillåt publicera" och "neka publicera" och jag har sett noll fall av personer som använder/invaderar mina videoservrar. Så jag tog inte med de direktiven här. Läs om och lägg till dessa direktiv om du vill.
Efter att ha ändrat nginx.conf
filen måste du starta om Nginx för att använda den nya konfigurationen:
sudo service nginx restart
Se noga efter eventuella Nginx-felmeddelanden och åtgärda eventuella fel som kan ha orsakats av felstavning, mappägande eller behörighetsproblem. Om du inte har några felmeddelanden är du redo att skapa din kodningsström.
Du måste ha en videokodare för att kunna skapa streamen. Jag använder OBS (Open Broadcaster Software) - som är öppen källkod och fungerar bra för mig. Det finns andra lösningar att välja mellan, som ligger utanför ramen för denna handledning. Jag kommer inte att täcka allt om att konfigurera en RTMP-videokodare. De kräver alla ungefär samma indatavariabler dock. De viktigaste inställningarna du måste ange för att använda min exakta nginx.conf
konfiguration och för att fungera bra på de flesta spelare/webbläsare/plattformar är följande:
Jag rekommenderar att du provar olika kodare och experimenterar med dem. Du kanske vill ha ett brett bildförhållande - eller så kan din kamera (eller andra sändningsmaterial) kräva det. Om så är fallet, se till att ändra denna information i din kodare och även bildförhållandet som anges i exec-ffmpeg-delen av nginx.conf
filen som jag har tillhandahållit; annars får du några fåniga videoflöden.
När din kodare är konfigurerad kan du testa allt. Starta kodaren med din webbkamera eller något slags testfoder som körs på den. Du kan se din sändning vid denna tidpunkt med VLC-spelare med hjälp av URL:er som:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
Dessa är för dina huvudsakliga respektive dina mobila videoströmmar. Byt ut din IP och strömnyckel i enlighet med detta.
Efter att du framgångsrikt har sänt din första stream kontrollera (via ssh eller ftp) att din livesändning spelades in i /video_recordings
mappen på din Vultr VPS. Du kan också prova att spela upp den här inspelade filen i VLC med en URL som:
rtmp://my-ip/vod/filename.flv
Nginx-statistik är också tillgänglig (med Nginx stub_status). För att se besöks-/tittarstatistik, gå till:
http://my-ip/stats
För att kunna se din video på en webbsida behöver du en inbäddningsbar spelare. Det finns många inbäddningsbara spelare tillgängliga som kommer att spela HLS-video. Jag har använt JW Player i några år nu, men gratisversionen kommer inte att spela HLS. Flowplayer och Bitdash av Bitmovin (bland andra lösningar) är generösa nog att erbjuda en icke-kommersiell version av sina spelare gratis som kommer att göra din HLS-ström inbäddad i en webbsida. För den här artikeln har jag provat dem båda och funnit att de båda fungerar ganska bra med min Vultr/Nginx-baserade videoserver. Jag kommer kort att visa hur jag fick igång Flowplayer med min testbäddsmaskin.
Om du ska använda live HLS-streaming på något regelbundet, ihållande eller kommersiellt sätt, skulle jag uppmuntra dig att köpa en licens från Flowplayer eller vilken spelare du än väljer att använda. Du kommer att få en spelare som har färre begränsningar, fler funktioner och som kan märkas till din organisation. Du får också stöd – vilket kan vara mycket viktigt. Förutom Vultr VPS är detta verkligen den enda kostnaden förknippad med projektet.
Innan du gör något annat är det viktigt att ta hand om det som kallas "cross-domain"-begränsningar, som annars skulle stänga av din möjlighet att streama till en webbsida/webbplats. Skapa en crossdomain.xml
fil i din nginx/html
mapp och lägg instruktioner i den så att data kan flöda mellan domäner:
sudo nano /usr/local/nginx/html/crossdomain.xml
Kopiera först (från den här sidan) och klistra sedan in (högerklicka) i nanoredigeringsfältet följande 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>
Tryck på Ctrl + O för att skriva ut, sedan Ctrl + X för att spara filen på disken och avsluta.
Jag tog tag i HTML5 (version 6.0.3) av Flowplayer som gav mig ett antal filer och en mapp när jag packade upp. Jag laddade upp alla filer och mappen till en undermapp av Nginx/HTML rotmapp som jag döpte till "flowplayer". Den exakta vägen var /usr/local/nginx/html/flowplayer
.
För att testa vår video när den är inbäddad på en webbsida, skapa ett par HTML-filer i roten av Nginx/HTML-mappen med nano och fyll i dem med följande innehåll.
Fil:
sudo nano /usr/local/nginx/html/hls.html
HTML-kod:
<!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-kod:
<!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>
Se till att ersätta "my-ip" och "my-stream-key" med dina data.
Du måste ersätta sökvägen flowplayer/skin/functional.css
för "#"-tecknet i stilmallen href="#"
. Handledningsprogramvaran tar bort vägen. Du måste fylla i en URL i src=""
en del - det är borttaget av handledningen programvara, användning http://my-ip/live/my-stream-key/index.m3u8
och http://my-ip/mobile/my-stream-key/index.m3u8
, respektive. Du måste också lägga till src
skripttaggar i huvudet för både jquery-1.11.2.min.js
och för flowplayer.min.js
. Taggarna tas bort av handledningsprogramvaran. Du kan ta reda på hur du skapar dessa taggar genom att titta på example html
filen som medföljer Flowplayer-satsen.
Starta kodaren med din webbkamera eller något slags testfoder som körs på den. Du kan se din sändning i en webbläsare med hjälp av följande webbadresser:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Den första sidan visar helt enkelt var och en av dina strömmar - den huvudsakliga och den mobila plattformen. Du kommer att kunna starta dem båda och se dem. Du kommer att märka att den mobila plattformsströmmen är mindre i storlek. Dessa steg är bara för att se till att allt fungerar.
Den andra sidan visar en enda ström. Men det är upplagt på ett sätt som kallas "progressiv streaming". Vad detta betyder är att när en tittare spelar upp videon, försöker både servern och spelaren ge tittaren strömmen med hög bithastighet och hög kvalitet om tittarnas anslutning kan upprätthålla den. Om deras anslutning är dålig och den inte kan upprätthålla anslutningen, rullar den ner till att visa strömmen med lägre bithastighet (mobil) som är 200 kbps lägre i bandbredd. Om du ville kan du skapa mer graderade, progressiva strömmar med ffmpeg och konfigurera dem med mitt exempel.
Jag har testat den här konfigurationen på en enda kärna, 1GB Vultr VPS och jag upptäckte att med en enda livestream, plus den trans-klassade mobilströmmen den skapar med ffmpeg, var CPU-användningen mindre än 35 % och den hade bara förbrukat 100 MB min 1GB ram. Nu är det en mycket effektiv installation.
Om du planerar att strömma video som är mycket större i pixeldimensioner än SD, kan du upptäcka att du måste använda en kraftfullare VPS. Jag var nyfiken på detta och körde min huvudström upp till 1280x960 pixlar och 2Mbps - vilket belastade saker ytterligare. Men VPS:n använde fortfarande bara 50 % CPU och minnesanvändningen låg kvar på 100 MB. Jag lade till ett dussin tittare/webbläsare och det gjorde nästan ingen skillnad i belastningen på VPS-en – bara den använda bandbredden ökade. Jag är säker på att skapa ytterligare trans-klassade strömmar med ffmpeg skulle fortsätta att belasta systemet ytterligare.
Jag har använt den här typen av server i produktionsmiljöer med mellan 50 och 100 samtidiga användare och upptäckte att resursanvändningen ökade väldigt lite med ökande tittaranslutningar. Experimentera med det. Men jag tror att de flesta användare skulle vara nöjda med att använda en enkelkärnig, 1 GB VPS. Njut av din nya HLS-streamingserver!
Använder du ett annat system? Jekyll är ett bra alternativ till WordPress för att blogga eller dela innehåll. Det kräver inga databaser och det är väldigt enkelt i
Squid är ett populärt, gratis Linux-program som låter dig skapa en webbproxy för vidarebefordran. I den här guiden ser du hur du installerar Squid på CentOS för att förvandla dig
Memcached är ett högpresterande databassystem som kan hjälpa dig att ladda din applikation. Det är väldigt snabbt eftersom det inte skriver till disken, utan istället t
Inledning InfluxDB är en öppen källkod, distribuerad, tidsseriedatabas utan externa beroenden. Ja, du läser paragrafen för inga externa beroenden
Fail2ban är ett program som övervakar inloggningsaktivitet på din server och blockerar stötande IP-adresser. Som standard blockerar den IP-adresser i 10 minuter
Använder du ett annat system? Red5 är en mediaserver med öppen källkod implementerad i Java som låter dig köra Flash fleranvändarapplikationer som livestreamin
Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa
Använder du ett annat system? Introduktion Kanboard är ett gratis och öppen källkodsprogram för projektledningsprogram som är utformat för att underlätta och visualisera
Använder du ett annat system? Introduktion Kanboard är ett gratis och öppen källkodsprogram för projektledningsprogram som är utformat för att underlätta och visualisera
Använder du ett annat system? Tiny Tiny RSS Reader är en gratis och öppen källkod, webbaserat nyhetsflöde (RSS/Atom) läsare och aggregator, utformad för att
Använder du ett annat system? Gitea är ett alternativt versionskontrollsystem med öppen källkod som drivs av Git. Gitea är skriven på Golang och är
Använder du ett annat system? Wiki.js är en gratis och öppen källkod, modern wiki-app byggd på Node.js, MongoDB, Git och Markdown. Wiki.js källkod är offentlig
Använder du ett annat system? Gitea är ett alternativt versionskontrollsystem med öppen källkod som drivs av git. Gitea är skriven på Golang och är
Använder du ett annat system? Thelia är ett verktyg med öppen källkod för att skapa e-handelswebbplatser och hantera onlineinnehåll skrivet i PHP. Thelia källkod i
Använder du ett annat system? Microweber är en öppen källkod för dra och släpp CMS och onlinebutik. Microweber källkod finns på GitHub. Denna guide kommer att visa dig
Använder du ett annat system? Microweber är en öppen källkod för dra och släpp CMS och onlinebutik. Microweber källkod finns på GitHub. Denna guide kommer att visa dig
Använder du ett annat system? MODX Revolution är ett snabbt, flexibelt, skalbart, gratis och öppen källkod, företagsklassat Content Management System (CMS) skrivet i
Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa
Använder du ett annat system? Mattermost är ett alternativ med öppen källkod, självvärd till meddelandetjänsten Slack SAAS. Med andra ord, med Mattermost, du ca
Använder du ett annat system? DotCMS är ett open-source, företagsklassat innehållshanteringssystem skrivet i Java. Den innehåller nästan alla funktioner som krävs
Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.
Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.
Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.
Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.
Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...
När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.
Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.
Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.
I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.
Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer