Ustvarjanje bloga Jekyll v Ubuntu 16.04
Uporaba drugega sistema? Jekyll je odlična alternativa WordPressu za bloganje ali deljenje vsebine. Ne zahteva nobenih baz podatkov in je zelo enostaven i
HTTP Live Streaming (HLS) je zelo robusten protokol za pretakanje videa, ki ga izvaja Apple Inc. HLS uporablja HTTP transakcije, ki prečkajo požarne zidove, proxyje in jih je mogoče z lahkoto distribuirati prek CDN-jev. Zato lahko ta tehnologija doseže veliko večje občinstvo gledalcev kot RTP ali drugi protokoli, ki temeljijo na UDP. Večino videoposnetkov v živo na spletu danes gostijo dragi sistemi, ki uporabljajo HLS, vendar so na splošno dragi in zahtevajo veliko strežniških virov. Ta vadnica vam bo pokazala, kako nastaviti zelo ugoden Ubuntu 14.04 VULTR VPS za pretočne dogodke HLS v živo z uporabo samo odprtokodne programske opreme.
Prvi korak je branje in nastavitev strežnika v skladu z Vultr Doc " Nastavitev Nginx-RTMP na Ubuntu 14.04 ". Navodila v tem dokumentu so bila v času pisanja najbolj izčrpna za fazo namestitve. Omenil bi, da boste morda želeli zamenjati "nginx-1.7.5" z "nginx-1.9.4" ali katero koli najnovejšo različico Nginxa, ki je na voljo. Drugi predlog je, da prevedete Nginx s statusnim modulom HTTP škrbine, da boste lahko spremljali, koliko gledalcev HLS v živo imate pozneje.
Namesto sestavljanja z:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Uporabite ta niz v postopku, opisanem v predpogojnem dokumentu:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Primer v tej vadnici bo ustvaril tako "živo" kot "mobilno" (optimizirano) tokove in bo uporabil ffmpeg (nameščen v prejšnji vadnici) za generiranje toka HLS s prilagojeno bitno hitrostjo, optimiziranega za mobilne naprave. Primer bo tudi pokazal, kako povzročiti, da strežnik samodejno posname vaše prenose v živo in vam omogoči predvajanje posnetkov kot storitev za predvajanje videa na zahtevo (VOD).
Najprej ustvarite strukture map, potrebne za shranjevanje živih in mobilnih manifestov HLS in video fragmentov:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Verjetno je dobro, da vklopite požarni zid, če tega še niste storili. Če je tako, morate dovoliti promet v vrata, ki jih uporabljata Nginx in HLS. Če želite za zdaj delovati brez požarnega zidu, prezrite spodnji razdelek ufw.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
HLS pretakanje zahteva bistveno drugačno konfiguracijo Nginx od konfiguracije RTMP v prvem članku. Uredite nginx.conf
datoteko tako, da bo uporabljala naslednje, tako da s svojimi podatki nadomestite "my-ip" in "my-stream-key". Za "my-stream-key" lahko uporabite karkoli želite, to je samo beseda, ki vam je edinstvena in vam pomaga. Morda boste želeli najprej varnostno kopirati svojo izvirno konfiguracijsko datoteko, nato pa prilepite moje dobavljene podatke o konfiguraciji v urejevalnik in zamenjajte vse, kar je bilo tam:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
Nov 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 izhod. Recite "da", da shranite spremembe.
V tej nginx.conf
datoteki lahko najdete jasna navodila in primere možnih spremenljivk, če v svojem najljubšem iskalniku poiščete "nginx-rtmp direktive". Že nekaj let uporabljam nginx-rtmp s HLS, ne da bi uporabil direktivi "dovoli objavo" in "zavrni objavo" in videl sem nič primerov, da bi ljudje uporabljali/vdrli v moje video strežnike. Zato teh direktiv tukaj nisem vključil. Preberite in dodajte te direktive, če želite.
Ko spremenite nginx.conf
datoteko, morate znova zagnati Nginx, da uporabite novo konfiguracijo:
sudo service nginx restart
Pozorno spremljajte morebitna sporočila o napakah Nginx in odpravite morebitne napake, ki bi jih lahko povzročile napačno črkovanje, lastništvo mape ali težave z dovoljenji. Če nimate sporočil o napakah, ste pripravljeni ustvariti svoj tok kodiranja.
Če želite ustvariti tok, morate imeti video kodirnik. Uporabljam OBS (Open Broadcaster Software) – ki je odprtokodna in mi dobro deluje. Izbirate lahko med drugimi rešitvami, ki so izven obsega te vadnice. Ne bom pokrival vsega o konfiguraciji video kodirnika RTMP. Vse pa zahtevajo približno enake vhodne spremenljivke. Ključne nastavitve, ki jih boste morali vnesti za uporabo moje natančne nginx.conf
konfiguracije in za dobro delovanje v večini predvajalnikov/brskalnikov/platform, so naslednje:
Priporočam, da preizkusite različne kodirnike in eksperimentirate z njimi. Morda boste želeli široko razmerje stranic ali pa to zahteva vaša kamera (ali drugi materiali za oddajanje). Če je tako, se prepričajte, da spremenite te podatke v kodirniku in tudi razmerje stranic, navedeno v razdelku exec-ffmpeg nginx.conf
datoteke, ki sem jo posredoval; sicer boste dobili nekaj neumnih video virov.
Ko je vaš kodirnik nastavljen, lahko vse preizkusite. Zaženite kodirnik s svojo spletno kamero ali kakšno testno krmo, ki teče na njej. Svojo oddajo si lahko na tej točki ogledate s predvajalnikom VLC z uporabo URL-jev, kot so:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
Te so za vaš glavni in mobilni video tokovi. Ustrezno zamenjajte svoj IP in ključ pretoka.
Ko ste uspešno oddali svoj prvi pretok preverite (prek ssh ali ftp), ali je bila vaša oddaja v živo posneta v /video_recordings
mapi na vašem Vultr VPS. Poskusite lahko tudi predvajati to posneto datoteko v VLC z URL-jem, kot je:
rtmp://my-ip/vod/filename.flv
Na voljo je tudi statistika Nginx (z Nginx stub_status). Za ogled statistike obiskovalcev/gledalcev dostopajte do:
http://my-ip/stats
Če si želite ogledati videoposnetek na spletni strani, potrebujete vdelani predvajalnik. Na voljo je veliko predvajalnikov, ki jih je mogoče vdelati, ki bodo predvajali HLS video. JW Player uporabljam že nekaj let, vendar brezplačna različica ne bo igrala HLS. Flowplayer in Bitdash podjetja Bitmovin (med drugimi rešitvami) sta dovolj radodarna, da brezplačno ponudita nekomercialno različico svojih predvajalnikov, ki bo vaš tok HLS upodobila v spletno stran. Za ta članek sem preizkusil oba in ugotovil, da oba zelo dobro delujeta z mojim video strežnikom, ki temelji na Vultr/Nginx. Na kratko bom pokazal, kako sem začel uporabljati Flowplayer s svojo napravo za testiranje.
Če boste uporabljali HLS pretočno predvajanje v živo na kakršen koli običajen, trajen ali komercialen način, vas spodbujam, da kupite licenco pri Flowplayerju ali katerem koli predvajalniku, za katerega se odločite. Dobili boste predvajalnika, ki ima manj omejitev, več funkcij in ga lahko označite z blagovno znamko vaše organizacije. Dobili boste tudi podporo – kar je lahko zelo pomembno. Razen Vultr VPS je to res edini strošek, povezan s projektom.
Preden naredite karkoli drugega, je pomembno, da poskrbite za tako imenovane omejitve »med domenami«, ki bi sicer onemogočale vašo možnost pretakanja na spletno stran/spletno mesto. Ustvarite crossdomain.xml
datoteko v svoji nginx/html
mapi in vanjo vstavite navodila, da omogočite pretok podatkov med domenami:
sudo nano /usr/local/nginx/html/crossdomain.xml
Najprej kopirajte (s te strani) in nato prilepite (z desnim klikom) v polje urejevalnika nano naslednje podatke XML:
<?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, da izpišete, nato Ctrl + X, da shranite datoteko na disk in zapustite.
Zgrabil sem HTML5 (različica 6.0.3) Flowplayerja, ki mi je ob razpakiranju dal številne datoteke in mapo. Vse datoteke in mapo sem naložil v podmapo korenske mape Nginx/HTML, ki sem jo poimenoval "flowplayer". Natančna pot je bila /usr/local/nginx/html/flowplayer
.
Če želite preizkusiti naš videoposnetek, ko je vdelan v spletno stran, ustvarite nekaj datotek HTML v korenu mape Nginx/HTML z uporabo nano in jih napolnite z naslednjo vsebino.
Mapa:
sudo nano /usr/local/nginx/html/hls.html
HTML koda:
<!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>
Mapa:
sudo nano /usr/local/nginx/html/hls_progressive.html
HTML koda:
<!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>
Ne pozabite zamenjati "my-ip" in "my-stream-key" s svojimi podatki.
Pot morate zamenjati flowplayer/skin/functional.css
za znak "#" v slogovni tabeli href="#"
. Programska oprema za vadnico odstrani pot. V del morate vnesti URL src=""
- programska oprema za vadnico ga odstrani, uporabite http://my-ip/live/my-stream-key/index.m3u8
in http://my-ip/mobile/my-stream-key/index.m3u8
. src
V glavo morate dodati tudi oznake skripta za oba jquery-1.11.2.min.js
in za flowplayer.min.js
. Programska oprema za vadnice odstrani oznake. Kako oblikovati te oznake, lahko ugotovite tako, da si ogledate example html
datoteko, ki je priložena kompletu Flowplayer.
Zaženite kodirnik s svojo spletno kamero ali kakšno testno krmo, ki teče na njej. Svojo oddajo si lahko ogledate v brskalniku z naslednjimi URL-ji:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Prva stran preprosto prikazuje vsak od vaših tokov – glavnega in tistega z mobilno platformo. Oboje boste lahko zagnali in si jih ogledali. Opazili boste, da je tok mobilne platforme manjši. Ti koraki so namenjeni samo zagotavljanju, da vse teče.
Druga stran prikazuje en sam tok. Vendar je nastavljen na način, ki se imenuje "progresivno pretakanje". To pomeni, da ko gledalec predvaja videoposnetek, tako strežnik kot predvajalnik skušata gledalcu omogočiti visokokakovosten tok, če ga povezava gledalcev lahko vzdržuje. Če je njihova povezava slaba in ne more vzdrževati povezave, se premakne navzdol na prikaz toka z nižjo bitno hitrostjo (mobilnega), ki je 200 kbps nižje v pasovni širini. Če želite, lahko s ffmpeg ustvarite bolj postopne, progresivne tokove in jih konfigurirate z mojim primerom.
To konfiguracijo sem preizkusil na enem jedru, 1 GB Vultr VPS, in ugotovil sem, da je bila z enim samim pretokom v živo in prenosnim mobilnim tokom, ki ga ustvari s ffmpeg, poraba procesorja manjša od 35 % in je porabil le 100 MB moj 1GB RAM-a. Zdaj je to zelo učinkovita postavitev.
Če nameravate pretakati videoposnetek, ki je veliko večjih slikovnih pik kot SD, boste morda ugotovili, da boste morali uporabiti zmogljivejši VPS. To me je zanimalo in zagnal sem svoj glavni tok do 1280x960 slikovnih pik in 2Mbps, kar je dodatno obremenilo stvari. Toda VPS je še vedno uporabljal le 50 % CPU-ja, poraba pomnilnika pa je ostala pri 100 MB. Dodal sem ducat pregledovalcev/brskalcev in skoraj ni bilo razlike v obremenitvi VPS – povečala se je le uporabljena pasovna širina. Prepričan sem, da bi ustvarjanje dodatnih tokov z oceno trans s ffmpeg še naprej dodatno obremenilo sistem.
To vrsto strežnika sem uporabljal v produkcijskih okoljih z med 50 in 100 sočasnimi uporabniki in ugotovil, da se je uporaba virov zelo malo povečala s povečanjem povezav gledalcev. Eksperimentirajte z njim. Ampak mislim, da bi večina uporabnikov z veseljem uporabila enojedrni, 1GB VPS. Uživajte v svojem novem HLS strežniku za pretakanje!
Uporaba drugega sistema? Jekyll je odlična alternativa WordPressu za bloganje ali deljenje vsebine. Ne zahteva nobenih baz podatkov in je zelo enostaven i
Squid je priljubljen brezplačen program za Linux, ki vam omogoča ustvarjanje spletnega proxyja za posredovanje. V tem priročniku boste videli, kako namestiti Squid na CentOS, da vas obrne
Memcached je visoko zmogljiv sistem baz podatkov, ki lahko pomaga nadgraditi vašo aplikacijo. Je zelo hiter, saj ne piše na disk, ampak namesto tega t
Uvod InfluxDB je odprtokodna, porazdeljena baza podatkov časovnih vrst brez zunanjih odvisnosti. Da, prebrali ste odstavek brez zunanjih odvisnosti
Fail2ban je program, ki spremlja prijavo na vaš strežnik in blokira neželene naslove IP. Privzeto bo blokiral naslove IP za 10 minut
Uporaba drugega sistema? Red5 je odprtokodni medijski strežnik, implementiran v Javi, ki vam omogoča zagon večuporabniških aplikacij Flash, kot je prenos v živo
Uporaba drugega sistema? Vanilla forum je odprtokodna forumska aplikacija, napisana v PHP. Je popolnoma prilagodljiv, enostaven za uporabo in podpira zunanjost
Uporaba drugega sistema? Uvod Kanboard je brezplačen in odprtokodni program za vodenje projektov, ki je zasnovan za olajšanje in vizualizacijo
Uporaba drugega sistema? Uvod Kanboard je brezplačen in odprtokodni program za vodenje projektov, ki je zasnovan za olajšanje in vizualizacijo
Uporaba drugega sistema? Gitea je alternativni odprtokodni sistem za nadzor različic, ki ga poganja Git. Gitea je napisana v Golangu in je
Uporaba drugega sistema? Wiki.js je brezplačna odprtokodna sodobna wiki aplikacija, zgrajena na Node.js, MongoDB, Git in Markdown. Izvorna koda Wiki.js je javna
Uporaba drugega sistema? Gitea je alternativni odprtokodni sistem za nadzor različic, ki ga poganja git. Gitea je napisana v Golangu in je
Uporaba drugega sistema? Thelia je odprtokodno orodje za ustvarjanje spletnih strani e-poslovanja in upravljanje spletnih vsebin, napisanih v PHP. Izvorna koda Thelia i
Uporaba drugega sistema? Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik vam bo pokazal
Uporaba drugega sistema? Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik vam bo pokazal
Uporaba drugega sistema? MODX Revolution je hiter, prilagodljiv, razširljiv, brezplačen in odprtokoden sistem za upravljanje vsebin (CMS) za podjetja, napisan i
Uporaba drugega sistema? Mattermost je odprtokodna alternativa sporočilni storitvi Slack SAAS, ki jo gosti sami. Z drugimi besedami, z Mattermostom si pribl
Uporaba drugega sistema? DotCMS je odprtokodni sistem za upravljanje vsebin za podjetja, napisan v Javi. Vsebuje skoraj vse zahtevane funkcije t
Uporaba drugega sistema? Pagekit 1.0 CMS je lep, modularen, razširljiv in lahek, brezplačen in odprtokoden sistem za upravljanje vsebine (CMS) z
Uporaba drugega sistema? BigTree CMS 4.2 je hiter in lahek, brezplačen in odprtokoden sistem za upravljanje vsebin podjetja (CMS) z obsežnim
Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.
Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.
Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.
Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.
Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…
Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.
Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.
Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.
V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.
Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več