Izrada Jekyll bloga na Ubuntu 16.04
Korištenje drugog sustava? Jekyll je izvrsna alternativa WordPressu za bloganje ili dijeljenje sadržaja. Ne zahtijeva nikakve baze podataka i vrlo je jednostavan i
HTTP Live Streaming (HLS) je vrlo robustan streaming video protokol koji implementira Apple Inc. HLS koristi HTTP transakcije koje prolaze kroz vatrozide, proxy servere i mogu se s lakoćom distribuirati putem CDN-ova. Stoga ova tehnologija može doseći mnogo veću publiku nego RTP ili drugi UDP protokoli. Veći dio video prijenosa uživo na mreži danas se održava u skupim sustavima koji koriste HLS, ali su općenito skupi i zahtijevaju puno poslužiteljskih resursa. Ovaj vodič će vam pokazati kako postaviti vrlo pristupačan Ubuntu 14.04 VULTR VPS za prijenos HLS događaja uživo koristeći samo softver otvorenog koda.
Prvi korak je čitanje i postavljanje vašeg poslužitelja u skladu s Vultr Doc-om " Postavljanje Nginx-RTMP-a na Ubuntu 14.04 ". Upute u tom dokumentu bile su najopsežnije za fazu postavljanja, u vrijeme pisanja. Spomenuo bih da biste možda željeli zamijeniti "nginx-1.7.5" s "nginx-1.9.4" ili bilo kojom najnovijom verzijom Nginxa koja je dostupna. Drugi prijedlog je da kompajlirate Nginx sa statusnim modulom HTTP stuba kako biste sebi dali mogućnost pratiti koliko gledatelja uživo HLS-a imate kasnije.
Umjesto sastavljanja sa:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Upotrijebite ovaj niz u postupku opisanom u preduvjetnom dokumentu:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Primjer u ovom vodiču kreirat će i "žive" i "mobilne" (optimizirane) streamove i koristit će ffmpeg (instaliran u prethodnom vodiču) za generiranje HLS streama prilagođene brzine prijenosa, optimiziranog za mobilne uređaje. Primjer će također pokazati kako natjerati poslužitelj da automatski snima vaše streamove uživo i kako bi vam omogućio reproduciranje snimaka kao uslugu reprodukcije videa na zahtjev (VOD).
Najprije stvorite strukture mapa potrebne za držanje HLS manifesta i video fragmenata uživo i mobilnih:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Vjerojatno je dobra ideja uključiti vatrozid ako to već niste učinili. Ako je tako, morate dopustiti promet na portove koje koriste Nginx i HLS. Ako za sada želite raditi bez vatrozida, zanemarite ufw odjeljak u nastavku.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
HLS streaming zahtijeva značajno drugačiju Nginx konfiguraciju od RTMP konfiguracije u prvom članku. Uredite svoju nginx.conf
datoteku kako biste koristili sljedeće, zamijenivši "my-ip" i "my-stream-key" svojim podacima. Možete koristiti sve što želite za "my-stream-key" to je samo riječ koja vam je jedinstvena i korisna. Možda ćete htjeti prvo napraviti sigurnosnu kopiju svoje izvorne konfiguracijske datoteke, a zatim zalijepiti moje dostavljene podatke o konfiguraciji u uređivač, zamjenjujući sve što je tamo bilo:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
Novi 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;
}
}
}
Pritisnite Ctrl + X za izlaz. Recite "da" da biste spremili promjene.
U ovoj nginx.conf
datoteci možete pronaći jasne upute i primjere mogućih varijabli ako svojoj omiljenoj tražilici zatražite "nginx-rtmp direktive". Koristim nginx-rtmp s HLS-om već nekoliko godina, bez korištenja direktiva "dopusti objavljivanje" i "deny publish" i vidio sam nula slučajeva ljudi koji koriste/napadaju moje video poslužitelje. Stoga te direktive nisam uključio ovdje. Pročitajte i dodajte ove direktive ako želite.
Nakon promjene nginx.conf
datoteke, morate ponovno pokrenuti Nginx da biste koristili novu konfiguraciju:
sudo service nginx restart
Pažljivo pratite bilo kakve poruke o pogrešci Nginxa i riješite sve pogreške koje su mogle biti uzrokovane pogrešnim pravopisom, vlasništvom mape ili problemima s dopuštenjima. Ako nemate poruke o pogrešci, onda ste spremni za kreiranje kodiranog streama.
Morate imati video koder da biste stvorili stream. Koristim OBS (Open Broadcaster Software) - koji je otvorenog koda i dobro mi radi. Postoje i druga rješenja koja su izvan dosega ovog vodiča. Neću pokrivati sve o konfiguraciji RTMP video kodera. Svi oni zahtijevaju otprilike iste ulazne varijable. Ključne postavke koje ćete morati unijeti kako biste koristili moju točnu nginx.conf
konfiguraciju i dobro funkcionirali na većini igrača/preglednika/platforma su sljedeće:
Preporučujem isprobavanje različitih kodera i eksperimentiranje s njima. Možda ćete poželjeti široki omjer širine i visine - ili to može zahtijevati vaša kamera (ili drugi materijali za emitiranje). Ako je tako, svakako promijenite ove podatke u svom koderu, kao i omjer slike naveden u odjeljku exec-ffmpeg nginx.conf
datoteke koju sam dostavio; inače ćete dobiti neke glupave video feedove.
Nakon što je vaš koder postavljen, možete sve testirati. Pokrenite koder sa svojom web kamerom ili nekom vrstom testne hrane koja radi na njoj. U ovom trenutku možete pogledati svoje emitiranje s VLC playerom koristeći URL-ove kao što su:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
To su za vaše glavne i mobilne videostreamove. Zamijenite svoj IP i ključ streama u skladu s tim.
Nakon što ste uspješno emitirali svoju prvu provjeru streama (putem ssh-a ili ftp-a) je li vaš prijenos uživo snimljen u /video_recordings
mapi na vašem Vultr VPS-u. Također možete pokušati reproducirati ovu snimljenu datoteku u VLC-u s URL-om kao što je:
rtmp://my-ip/vod/filename.flv
Nginx statistika je također dostupna (s Nginx stub_status). Za pregled statistike posjetitelja/gledatelja, pristupite:
http://my-ip/stats
Da biste vidjeli svoj video na web-stranici, trebat će vam player koji se može ugraditi. Dostupni su mnogi reproduktori koji se mogu ugraditi i koji će reproducirati HLS video. Koristim JW Player već nekoliko godina, ali besplatna verzija neće igrati HLS. Flowplayer i Bitdash od Bitmovin (između ostalih rješenja) dovoljno su velikodušni da besplatno ponude nekomercijalnu verziju svojih playera koja će vaš HLS stream učiniti ugrađenim u web stranicu. Za ovaj članak, isprobao sam ih oba i otkrio da oba prilično dobro funkcioniraju s mojim video poslužiteljem koji se temelji na Vultr/Nginxu. Ukratko ću pokazati kako sam pokrenuo Flowplayer sa svojim testnim strojem.
Ako namjeravate koristiti HLS streaming uživo na bilo koji redoviti, kontinuirani ili komercijalni način, potaknuo bih vas da kupite licencu od Flowplayera ili bilo kojeg igrača koji odlučite koristiti. Dobit ćete igrača koji ima manje ograničenja, više značajki i koji se može brendirati za vašu organizaciju. Također ćete dobiti podršku – što može biti vrlo važno. Osim Vultr VPS-a, ovo je zapravo jedini trošak povezan s projektom.
Prije nego što učinite bilo što drugo, važno je voditi računa o onome što se naziva ograničenjima "više domena", koja bi inače isključila vašu mogućnost strujanja na web-stranicu/web-stranicu. Napravite crossdomain.xml
datoteku u svojoj nginx/html
mapi i stavite upute u nju kako biste omogućili protok podataka između domena:
sudo nano /usr/local/nginx/html/crossdomain.xml
Prvo kopirajte (s ove stranice), a zatim zalijepite (desni klik) u polje nano uređivača sljedeće XML podatke:
<?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>
Pritisnite Ctrl + O za pisanje, zatim Ctrl + X za spremanje datoteke na disk i izlaz.
Zgrabio sam HTML5 (verzija 6.0.3) Flowplayera koji mi je dao niz datoteka i mapu kada sam raspakirao. Učitao sam sve datoteke i mapu u podmapu Nginx/HTML korijenske mape koju sam nazvao "flowplayer". Točan put je bio /usr/local/nginx/html/flowplayer
.
Kako biste testirali naš video kada je ugrađen u web stranicu, stvorite nekoliko HTML datoteka u korijenu mape Nginx/HTML pomoću nanoa i popunite ih sljedećim sadržajem.
Datoteka:
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>
Datoteka:
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>
Svakako zamijenite "my-ip" i "my-stream-key" svojim podacima.
Morate zamijeniti put flowplayer/skin/functional.css
za znak "#" u tablici stilova href="#"
. Softver za tutorial uklanja put. Morate ispuniti URL u src=""
dijelu - uklanja ga softver za tutorial, koristite http://my-ip/live/my-stream-key/index.m3u8
i http://my-ip/mobile/my-stream-key/index.m3u8
, respektivno. Također morate dodati src
oznake skripte u glavu jquery-1.11.2.min.js
i za i za flowplayer.min.js
. Softver za tutorial uklanja oznake. Možete saznati kako oblikovati ove oznake gledajući example html
datoteku uključenu u Flowplayer kit.
Pokrenite koder sa svojom web kamerom ili nekom vrstom testne hrane koja radi na njoj. Svoje emitiranje možete pogledati u pregledniku koristeći sljedeće URL-ove:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Prva stranica jednostavno prikazuje svaki vaš stream - glavni i onaj na mobilnoj platformi. Moći ćete ih pokrenuti i pogledati. Primijetit ćete da je stream mobilne platforme manji. Ovi koraci služe samo kako bi bili sigurni da sve radi.
Druga stranica prikazuje jedan stream. Ali postavljen je na način koji se zove "progresivni streaming". To znači da kada gledatelj reproducira video, i poslužitelj i player pokušavaju pružiti gledatelju stream velike brzine prijenosa i visoke kvalitete ako ga veza gledatelja može održati. Ako je njihova veza loša i ne može održati vezu, spušta se na prikaz niže bitrate (mobilnog) streama koji je 200 kbps niži u propusnosti. Ako želite, možete kreirati postupnije, progresivne streamove s ffmpeg-om i konfigurirati ih koristeći moj primjer.
Testirao sam ovu konfiguraciju na jednoj jezgri, 1GB Vultr VPS-a i otkrio sam da je s jednim streamom uživo, plus prijenosom s prijenosom na mobilnom uređaju koji stvara s ffmpeg-om, korištenje CPU-a bilo manje od 35% i da je potrošio samo 100MB moj 1GB ram memorije. Sada je to vrlo učinkovito postavljanje.
Ako planirate streamati video koji je u pikselima puno veći od SD-a, možda ćete otkriti da morate koristiti moćniji VPS. To me zanimalo i pokrenuo sam glavni stream do 1280x960 piksela i 2Mbps - dodatno opteretivši stvari. Ali VPS je i dalje koristio samo 50% CPU-a, a upotreba memorije je ostala na 100 MB. Dodao sam desetak pregledača/preglednika i gotovo da nije bilo razlike u opterećenju VPS-a - samo se povećala širina pojasa. Siguran sam da bi stvaranje dodatnih trans-rated streamova s ffmpeg-om nastavilo dodatno opterećivati sustav.
Koristio sam ovu vrstu poslužitelja u proizvodnim okruženjima s između 50 i 100 istodobnih korisnika i otkrio da je korištenje resursa vrlo malo poraslo s povećanjem povezivanja gledatelja. Eksperimentirajte s tim. Ali mislim da bi većina korisnika bila zadovoljna korištenjem jednojezgrenog VPS-a od 1 GB. Uživajte u svom novom HLS streaming serveru!
Korištenje drugog sustava? Jekyll je izvrsna alternativa WordPressu za bloganje ili dijeljenje sadržaja. Ne zahtijeva nikakve baze podataka i vrlo je jednostavan i
Squid je popularan besplatni program za Linux koji vam omogućuje stvaranje web proxyja za prosljeđivanje. U ovom vodiču vidjet ćete kako instalirati Squid na CentOS da vas preokrene
Memcached je sustav baze podataka visokih performansi koji može pomoći u nadopunjavanju vaše aplikacije. Vrlo je brz jer ne piše na disk, već t
Uvod InfluxDB je open-source, distribuirana baza podataka vremenskih serija bez vanjskih ovisnosti. Da, pročitali ste paragraf bez vanjskih ovisnosti
Fail2ban je program koji nadzire aktivnost prijave na vašem poslužitelju i blokira uvredljive IP adrese. Prema zadanim postavkama, blokirat će IP adrese na 10 minuta
Korištenje drugog sustava? Red5 je medijski poslužitelj otvorenog koda implementiran u Javi koji vam omogućuje pokretanje Flash višekorisničkih aplikacija kao što je live streamin
Korištenje drugog sustava? Vanilla forum je aplikacija otvorenog koda napisana u PHP-u. Potpuno je prilagodljiv, jednostavan za korištenje i podržava eksterne
Korištenje drugog sustava? Uvod Kanboard je besplatni softver za upravljanje projektima otvorenog koda koji je dizajniran za olakšavanje i vizualizaciju
Korištenje drugog sustava? Uvod Kanboard je besplatni softver za upravljanje projektima otvorenog koda koji je dizajniran za olakšavanje i vizualizaciju
Korištenje drugog sustava? Tiny Tiny RSS Reader je besplatan čitač i agregator vijesti otvorenog koda koji se hostira na webu (RSS/Atom), dizajniran za
Korištenje drugog sustava? Gitea je alternativni sustav za kontrolu verzija otvorenog koda s vlastitim hostom koji pokreće Git. Gitea je napisana na Golangu i jest
Korištenje drugog sustava? Wiki.js je besplatna i moderna wiki aplikacija otvorenog koda izgrađena na Node.js, MongoDB, Git i Markdown. Izvorni kod Wiki.js je javni
Korištenje drugog sustava? Gitea je alternativni sustav za kontrolu verzija otvorenog koda s vlastitim hostom koji pokreće git. Gitea je napisana na Golangu i jest
Korištenje drugog sustava? Thelia je alat otvorenog koda za izradu web stranica e-poslovanja i upravljanje online sadržajem napisanim u PHP-u. Thelia izvorni kod i
Korištenje drugog sustava? Microweber je CMS i internetska trgovina otvorenog koda povuci i ispusti. Izvorni kod Microwebera nalazi se na GitHubu. Ovaj vodič će vam pokazati
Korištenje drugog sustava? Microweber je CMS i internetska trgovina otvorenog koda povuci i ispusti. Izvorni kod Microwebera nalazi se na GitHubu. Ovaj vodič će vam pokazati
Korištenje drugog sustava? MODX Revolution je brz, fleksibilan, skalabilan, besplatan i otvorenog koda, Enterprise-grade Content Management System (CMS) napisan i
Korištenje drugog sustava? Mattermost je open source alternativa Slack SAAS servisu za razmjenu poruka. Drugim riječima, s Mattermostom možete ca
Korištenje drugog sustava? DotCMS je open-source sustav za upravljanje sadržajem poslovnog razreda napisan na Javi. Sadrži gotovo sve potrebne značajke t
Korištenje drugog sustava? Pagekit 1.0 CMS je prekrasan, modularan, proširiv i lagan, besplatan i otvoreni sustav za upravljanje sadržajem (CMS) s
Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.
Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.
Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.
Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.
Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…
Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.
Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.
Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.
U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.
Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više