Configurați Nginx pe Ubuntu pentru a transmite în direct HLS Video

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.conffiș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.conffiș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.conffiș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.confconfigurația mea exactă și pentru a funcționa bine în majoritatea jucătorilor / browserelor / platformelor sunt următoarele:

  1. Encoder-x264
  2. Bitrate variabile (nu CBR sau constant bit rate), cea mai înaltă calitate
  3. Max bitrate-600kbps
  4. Audio-Codec-AAC
  5. Audio-Format-44.1kHz
  6. Audio-bitrate-64kbps
  7. URL FMS- "rtmp: // my-ip: 1935 / live"
  8. Cheia fluxului - „cheia mea de flux”
  9. Rezoluție 640x480-
  10. FPS (cadre pe secundă) -30
  11. CFR (constant frame frame) - Da
  12. Interval cadru cheie-2 secunde (un cadru cheie la fiecare 2 secunde)
  13. x264 Codificarea liniei de bază a profilului (poate funcționa cu principal - depinde de jucătorul folosit)
  14. x264 CPU prezent-foarte rapid

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.conffiș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_recordingsfolderul 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.xmlfișier în nginx/htmlfolderul 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.csscu 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.m3u8respectiv. De asemenea, trebuie să adăugați srcetichete 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 htmlfiș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!



Leave a Comment

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

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

Configurați un server TeamTalk pe Linux

Configurați un server TeamTalk pe Linux

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

Cum se instalează forumul NodeBB pe FreeBSD 12

Cum se instalează forumul NodeBB pe FreeBSD 12

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

Cum se instalează Ranger Terminal File Manager pe Linux

Cum se instalează Ranger Terminal File Manager pe Linux

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

Cum se instalează Redmine pe Ubuntu 16.04

Cum se instalează Redmine pe Ubuntu 16.04

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

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

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

Cum se instalează Thelia 2.3 pe Debian 9

Cum se instalează Thelia 2.3 pe Debian 9

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

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

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

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Cum se instalează Chamilo 1.11.8 pe CentOS 7

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ă

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

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

Cum se instalează și se configurează CyberPanel pe Ubuntu 18.04 LTS

Cum se instalează și se configurează CyberPanel pe Ubuntu 18.04 LTS

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?

Instalarea comunității Odoo 9 pe CentOS 7

Instalarea comunității Odoo 9 pe CentOS 7

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

Configurarea ClamFS și ClamAV pe Ubuntu

Configurarea ClamFS și ClamAV pe Ubuntu

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

Cum se instalează Couch CMS 2.0 pe un VPS CentOS 7 LAMP

Cum se instalează Couch CMS 2.0 pe un VPS CentOS 7 LAMP

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

Cum se instalează SonarQube pe CentOS 7

Cum se instalează SonarQube pe CentOS 7

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ă

Cum se instalează NextCloud 9 pe CentOS 7

Cum se instalează NextCloud 9 pe CentOS 7

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

Instalarea Netdata pe CentOS 7

Instalarea Netdata pe CentOS 7

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:

Cum se instalează Monica pe Ubuntu 18.04 LTS

Cum se instalează Monica pe Ubuntu 18.04 LTS

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

Cum se instalează Automad CMS pe FreeBSD 12

Cum se instalează Automad CMS pe FreeBSD 12

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

Cum se instalează Panoul de control OpenSIPS pe Ubuntu 16.04

Cum se instalează Panoul de control OpenSIPS pe Ubuntu 16.04

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

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

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”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

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: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

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?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

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.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

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!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

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.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

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