Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP
Folosind un sistem diferit? Anchor CMS este un motor de blog de sistem de gestionare a conținutului (CMS) super-simplu și extrem de ușor, gratuit și deschis
HTTP Live Streaming (HLS) este un protocol video foarte robust implementat de Apple Inc. HLS utilizează tranzacții HTTP care traversează firewall-uri, proxies și pot fi distribuite prin CDN-uri cu ușurință. Prin urmare, această tehnologie este în măsură să ajungă la un public de vizionare mult mai mare decât RTP sau alte protocoale bazate pe UDP. O mare parte din transmisiile video live online de astăzi sunt găzduite de sisteme scumpe care folosesc HLS, dar în general sunt costisitoare și necesită o mulțime de resurse de server. Acest tutorial vă va arăta cum să configurați un Ubuntu 14.04 VULTR VPS foarte accesibil pentru a face evenimente de transmisie în direct HLS folosind doar software open source.
Primul pas este să citiți și să configurați serverul dvs. în conformitate cu Vultr Doc " Setare Nginx-RTMP pe Ubuntu 14.04 ". Instrucțiunile din documentul respectiv au fost cele mai cuprinzătoare pentru etapa de configurare, la momentul scrierii. Aș menționa că poate doriți să înlocuiți „nginx-1.7.5” cu „nginx-1.9.4” sau oricare ar fi ultima versiune a Nginx. Cealaltă sugestie este să compilați Nginx cu modulul de stare HTTP pentru a vă oferi posibilitatea de a monitoriza câți spectatori HLS în direct aveți mai târziu.
În loc să compileze cu:
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
Utilizați acest șir în procedura descrisă în documentul prealabil:
./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master
Exemplul din acest tutorial va crea fluxuri „live” și „mobile” (optimizate) și va folosi ffmpeg (instalat în tutorialul anterior) pentru a genera fluxul HLS optimizat pentru rata de biți. Exemplul va arăta, de asemenea, modul în care serverul vă va înregistra fluxurile live în mod automat și vă va permite să redați înregistrările ca un serviciu de redare video la cerere (VOD).
Mai întâi, creați structurile de folder necesare pentru a reține manifestele HLS live și mobile și fragmentele video:
sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings
Este probabil o idee bună să aveți firewall-ul pornit dacă nu ați făcut-o deja. Dacă da, trebuie să permiteți traficul în porturile utilizate de Nginx și HLS. Dacă doriți să rulați fără firewall deocamdată, ignorați secțiunea ufw de mai jos.
sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable
Streamingul HLS necesită o configurație Nginx semnificativ diferită de configurația RTMP din primul articol. Editați nginx.conf
fișierul dvs. pentru a utiliza următoarele, înlocuind „my-ip” și „my-stream-key” cu informațiile dvs. Puteți utiliza orice doriți pentru „my-stream-key”, este doar un cuvânt care vă este unic și util. Poate doriți mai întâi să faceți o copie de siguranță a fișierului de configurație inițial, apoi să inserați informațiile de configurare furnizate în editor, înlocuind tot ce a fost acolo:
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf
Nginx.conf nou:
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;
}
}
}
Apăsați Ctrl + X pentru a ieși. Spune „da” pentru a salva modificările.
Puteți găsi instrucțiuni clare și exemple de variabile posibile în acest nginx.conf
fișier dacă vă adresați motorul de căutare preferat pentru „directive nginx-rtmp”. Folosesc nginx-rtmp cu HLS de câțiva ani, fără să folosesc directivele „permite publicarea” și „refuză publicarea” și am văzut zero cazuri de persoane care folosesc / invadează serverele mele video. Deci nu am inclus aceste directive aici. Citiți și adăugați aceste directive dacă doriți.
După modificarea nginx.conf
fișierului, trebuie să reporniți Nginx pentru a utiliza noua configurație:
sudo service nginx restart
Urmăriți cu atenție orice mesaj de eroare Nginx și abordați eventualele erori care ar fi fost cauzate de ortografia greșită, proprietatea folderului sau problemele de permisiuni. Dacă nu aveți mesaje de eroare, atunci sunteți gata să creați fluxul de codificare.
Pentru a crea fluxul, trebuie să aveți un codificator video. Folosesc OBS (Open Broadcaster Software) - care este open-source și funcționează bine pentru mine. Există și alte soluții pentru a alege, care sunt în afara domeniului de aplicare a acestui tutorial. Nu voi acoperi totul despre configurarea unui codificator video RTMP. Cu toate acestea, toate necesită aproximativ aceleași variabile de intrare. Setările cheie pe care trebuie să le introduceți pentru a utiliza nginx.conf
configurația mea exactă și pentru a funcționa bine în majoritatea jucătorilor / browserelor / platformelor sunt următoarele:
Vă recomand să încercați diferite codificatoare și să experimentați cu ele. S-ar putea să doriți un raport larg de aspect - sau camera dvs. (sau alte materiale difuzate) o pot solicita. Dacă da, asigurați-vă că modificați aceste informații în codificator și, de asemenea, raportul de aspect listat în secțiunea exec-ffmpeg a nginx.conf
fișierului pe care l-am furnizat; în caz contrar, veți primi niște fluxuri video cu aspect neobișnuit.
După ce este configurat codificatorul, poți testa totul. Porniți codificatorul cu camera web sau cu un fel de furaj test care rulează pe ea. Puteți vedea difuzarea dvs. în acest moment cu un player VLC folosind URL-uri precum:
http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8
Acestea sunt destinate fluxurilor video principale și, respectiv, mobile. Înlocuiți IP-ul și cheia de flux în consecință.
După ce ați difuzat cu succes primul flux de verificare (prin ssh sau ftp), difuzarea în direct a fost înregistrată în /video_recordings
folderul VPS-ului Vultr. De asemenea, puteți încerca să redați acest fișier înregistrat în VLC cu un URL cum ar fi:
rtmp://my-ip/vod/filename.flv
Statisticile Nginx sunt de asemenea disponibile (cu Nginx stub_status). Pentru a vizualiza statisticile vizitatorului / privitorului, accesați:
http://my-ip/stats
Pentru a vizualiza videoclipul dvs. pe o pagină web, veți avea nevoie de un player încorporat. Există mulți jucători încorporați disponibili, care vor reda video HLS. Am folosit JW Player de câțiva ani în urmă, dar versiunea gratuită nu va juca HLS. Flowplayer și Bitdash by Bitmovin (printre alte soluții) sunt suficient de generoase pentru a oferi gratuit o versiune non-comercială a jucătorilor lor, care va face fluxul HLS încorporat într-o pagină web. Pentru acest articol, le-am încercat pe amândouă și le-am găsit să funcționeze destul de bine cu serverul meu video bazat pe Vultr / Nginx. Voi arăta pe scurt cum am mers pe Flowplayer cu mașina mea de testat.
Dacă intenționați să utilizați streaming HLS în direct în orice mod regulat, susținut sau comercial, v-aș încuraja să achiziționați o licență de la Flowplayer sau de la orice jucător decideți să o utilizați. Veți obține un jucător care are mai puține restricții, mai multe funcții și care poate fi marcat pentru organizația dvs. Veți primi, de asemenea, suport - ceea ce poate fi foarte important. În afară de Vultr VPS, acesta este într-adevăr singurul cost asociat cu proiectul.
Înainte de a face orice altceva, este important să aveți grijă de ceea ce se numește restricții „domeniu încrucișat”, care altfel v-ar închide capacitatea de a transmite către o pagină web / site web. Creați un crossdomain.xml
fișier în nginx/html
folderul dvs. și puneți instrucțiuni în el pentru a permite fluxurilor de date între domenii:
sudo nano /usr/local/nginx/html/crossdomain.xml
Mai întâi copiați (din această pagină) și apoi inserați (faceți clic dreapta) în câmpul editor nano următoarele date 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>
Apăsați Ctrl + O pentru a scrie, apoi Ctrl + X pentru a salva fișierul pe disc și a ieși.
Am apucat HTML5 (versiunea 6.0.3) de Flowplayer, care mi-a oferit un număr de fișiere și un dosar la dezarhivare. Am încărcat toate fișierele și folderul într-un subfolder al folderului rădăcină Nginx / HTML pe care l-am numit „flowplayer”. Calea exactă a fost /usr/local/nginx/html/flowplayer
.
Pentru a testa video-ul nostru atunci când este încorporat într-o pagină web, creați câteva fișiere HTML în rădăcina folderului Nginx / HTML folosind nano și populați-le cu următorul conținut.
Fişier:
sudo nano /usr/local/nginx/html/hls.html
Cod HTML:
<!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>
Fişier:
sudo nano /usr/local/nginx/html/hls_progressive.html
Cod HTML:
<!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>
Asigurați-vă că înlocuiți „my-ip” și „my-stream-key” cu datele dvs.
Trebuie să înlocuiți calea flowplayer/skin/functional.css
cu semnul „#” din fișa de stil href="#"
. Software-ul tutorial desprinde calea. Trebuie să completați o adresă URL în src=""
partea respectivă - este eliminată de software-ul tutorial , respectiv de utilizare http://my-ip/live/my-stream-key/index.m3u8
și http://my-ip/mobile/my-stream-key/index.m3u8
respectiv. De asemenea, trebuie să adăugați src
etichete script în cap atât pentru cât jquery-1.11.2.min.js
și pentru flowplayer.min.js
. Etichetele sunt eliminate de software-ul tutorial. Puteți găsi modul de modărește aceste etichete, consultând example html
fișierul inclus în kitul Flowplayer.
Porniți codificatorul cu camera web sau cu un fel de furaj test care rulează pe ea. Puteți vedea difuzarea dvs. într-un browser folosind următoarele adrese URL:
http://my-ip/hls.html
http://my-ip/hls_progressive.html
Prima pagină arată pur și simplu fiecare flux - dvs. principal și platforma mobilă. Îi vei putea porni și vizualiza. Veți observa că fluxul platformei mobile are dimensiuni mai mici. Acești pași sunt doar pentru a vă asigura că totul rulează.
A doua pagină prezintă un singur flux. Dar este configurat într-un mod care se numește „streaming progresiv”. Ceea ce înseamnă asta este că atunci când un vizualizator redă videoclipul, atât serverul, cât și playerul încearcă să ofere spectatorului un flux de înaltă calitate și de înaltă calitate, dacă conexiunea telespectatorilor o poate susține. Dacă conexiunea lor este slabă și nu poate susține conexiunea, se derulează pentru a afișa fluxul de biți inferiori (mobil) care este cu 200 kbps mai mic în lățimea de bandă. Dacă doriți, puteți crea fluxuri progresive, mai avansate, cu ffmpeg și configurați-le folosind exemplul meu.
Am testat această configurație pe un singur nucleu, VGB Vultr de 1 GB și am constatat că cu un singur flux live, plus fluxul mobil trans-evaluat pe care îl creează cu ffmpeg, utilizarea cpu a fost mai mică de 35% și a consumat doar 100 MB de 1GB meu de berbec. Acum este o configurare foarte eficientă.
Dacă intenționați să transmiteți un videoclip care este mult mai mare în dimensiuni de pixeli decât SD, s-ar putea să vedeți că trebuie să utilizați un VPS mai puternic. Eram curios de acest lucru și am rulat fluxul principal până la 1280x960 pixeli și 2Mbps - punând sarcină suplimentară asupra lucrurilor. Însă VPS-ul a folosit în continuare doar procesorul de 50% și utilizarea memoriei a rămas la 100 MB. Am adăugat o duzină de spectatori / browsere și nu a făcut aproape nicio diferență de încărcare pe VPS - doar lățimea de bandă folosită a crescut. Sunt sigur că crearea fluxurilor adiționale trans-nominale cu ffmpeg ar continua să pună sarcină suplimentară pe sistem.
Am folosit acest tip de server în medii de producție cu între 50 și 100 de utilizatori simultan și am constatat că utilizarea resurselor a crescut foarte puțin odată cu creșterea conexiunilor de vizualizare. Experimentează cu ea. Dar cred că majoritatea utilizatorilor ar fi mulțumiți folosind un VPS de 1 GB, cu un singur nucleu. Bucurați-vă de noul dvs. server de streaming HLS!
Folosind un sistem diferit? Anchor CMS este un motor de blog de sistem de gestionare a conținutului (CMS) super-simplu și extrem de ușor, gratuit și deschis
TeamTalk este un sistem de conferințe care permite utilizatorilor să aibă conversații audio / video de înaltă calitate, chat de text, transfer de fișiere și partajare ecrane. Este
Folosind un sistem diferit? NodeBB este un software de forum bazat pe Node.js. Utilizează prize web pentru interacțiuni instantanee și notificări în timp real. Nodul B
Ranger este un manager de fișiere bazat pe linia de comandă cu legături de cheie VI. Oferă o interfață de blestem minimalistă și frumoasă, cu o vedere asupra ierarhiei de directoare
Folosind un sistem diferit? Redmine este un instrument gratuit și deschis de gestionare a proiectelor bazat pe web. Este scris în Ruby on Rails și acceptă mai multe baze de date
Folosind un sistem diferit? Brotli este o nouă metodă de compresie cu un raport de compresie mai bun decât GZIP. Codul sursă este găzduit public pe acest Githu
Folosind un sistem diferit? Thelia este un instrument open source pentru crearea de site-uri web pentru e-business și gestionarea conținutului online scris în PHP. Codul sursă Thelia i
Folosind un sistem diferit? DokuWiki este un program wiki open source scris în PHP care nu necesită o bază de date. Stochează date în fișiere text. DokuWik
Folosind un sistem diferit? Chamilo este un sistem gratuit și deschis de management al învățării (LMS), care este utilizat pe scară largă pentru educația online și colaborarea în echipă
EasyEngine (ee) este un instrument Python care vă permite să gestionați ușor și automat site-urile Wordpress de pe Nginx. Folosind EasyEngine, nu va trebui să dați
Folosind un sistem diferit? Introducere CyberPanel este unul dintre primele panouri de control de pe piață care este atât open source și folosește OpenLiteSpeed. Ce-i asta?
Odoo, cunoscută anterior drept OpenERP, este o cunoscută platformă de afaceri ERP open source. Întreprinderile de orice dimensiune pot beneficia de Odoo, datorită licenței sale abundente
ClamAV este o suită antivirus gratuită și open-source. Când planificați o strategie de securitate pentru serverul dvs., poate doriți să luați în considerare rularea unui antivirus pentru protecție
Folosind un sistem diferit? Couch CMS este un sistem de gestionare a conținutului (CMS) simplu și flexibil, gratuit și deschis, care permite proiectanților web să deseneze
Folosind un sistem diferit? SonarQube este un instrument open source pentru dezvoltarea sistemului de calitate. Este scris în Java și acceptă mai multe baze de date. Oferă
NextCloud, așa cum sugerează și numele său, este o alternativă promițătoare a unei alte soluții de hosting de fișiere open source OwnCloud. În acest articol, vă voi arăta
Folosind un sistem diferit? Netdata este o stea în creștere în domeniul monitorizării în timp real a metricilor sistemului. Comparativ cu alte instrumente de același fel, Netdata:
Folosind un sistem diferit? Monica este un sistem open source de management al relațiilor personale. Gândiți-vă la el ca la un CRM (un instrument popular folosit de echipele de vânzări din sec
Folosind un sistem diferit? Automad este un sistem open source de conținut bazat pe fișiere (CMS) și motor de șabloane, scris în PHP. Codul sursă Automad i
Panoul de control OpenSIPS este o aplicație web bazată pe PHP pentru furnizarea unui server SIP OpenSIPS. Poate fi utilizat pentru furnizarea, operarea și monitorizarea multiplicării
O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.
Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.
Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.
Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.
CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?
Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.
Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!
Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.
Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe