Configura Nginx a Ubuntu per reproduir vídeo HLS en directe

HTTP Live Streaming (HLS) és un protocol de transmissió de vídeo molt robust implementat per Apple Inc. HLS utilitza transaccions HTTP que travessen tallafocs, servidors intermediaris i es poden distribuir a través de CDN amb facilitat. Per tant, aquesta tecnologia és capaç d'arribar a un públic de visualització molt més gran que RTP o altres protocols basats en UDP. Gran part del vídeo en directe en línia actual està allotjat per sistemes cars que utilitzen HLS, però generalment són cars i requereixen molts recursos del servidor. Aquest tutorial us mostrarà com configurar un Ubuntu 14.04 VULTR VPS molt assequible per fer esdeveniments de transmissió en directe HLS utilitzant només programari de codi obert.

El primer pas és llegir i configurar el vostre servidor segons Vultr Doc " Configuració de Nginx-RTMP a Ubuntu 14.04 ". Les instruccions d'aquest document eren les més completes per a l'etapa de configuració, en el moment d'escriure. Vull esmentar que potser voldreu substituir "nginx-1.7.5" per "nginx-1.9.4" o qualsevol que sigui la darrera versió de Nginx disponible. L'altre suggeriment és compilar Nginx amb el mòdul d'estat del taló HTTP per donar-vos la possibilitat de controlar quants visualitzadors HLS en directe teniu més tard.

En lloc de compilar amb:

./configure --with-http_ssl_module  --add-module=../nginx-rtmp-module-master

Utilitzeu aquesta cadena en el procediment descrit al document de requisits previs:

./configure --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-master

L'exemple d'aquest tutorial crearà fluxos "en directe" i "mòbils" (optimitzats) i utilitzarà ffmpeg (instal·lat al tutorial anterior) per generar el flux HLS optimitzat per a mòbils ajustat a la velocitat de bits. L'exemple també mostrarà com fer que el servidor enregistri les vostres reproduccions en directe automàticament i us permetrà reproduir les gravacions com a servei de reproducció de vídeo sota demanda (VOD).

Primer, creeu les estructures de carpetes necessàries per contenir els manifests HLS en directe i mòbils i els fragments de vídeo:

sudo mkdir /HLS
sudo mkdir /HLS/live
sudo mkdir /HLS/mobile
sudo mkdir /video_recordings
sudo chmod -R 777 /video_recordings

Probablement sigui una bona idea tenir el tallafoc activat si encara no ho heu fet. Si és així, heu de permetre el trànsit als ports utilitzats per Nginx i HLS. Si voleu córrer sense el tallafoc de moment, ignoreu la secció ufw a continuació.

sudo ufw limit ssh
sudo ufw allow 80
sudo ufw allow 1935
sudo ufw enable

La transmissió HLS requereix una configuració de Nginx significativament diferent de la configuració RTMP del primer article. Editeu el vostre nginx.conffitxer per utilitzar el següent, substituint "my-ip" i "my-stream-key" per la vostra informació. Pots fer servir qualsevol cosa que vulguis per a "la meva clau de flux", és només una paraula única i útil per a tu. És possible que primer vulgueu fer una còpia de seguretat del fitxer de configuració original i després enganxar la meva informació de configuració proporcionada a l'editor, substituint tot el que hi havia:

sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.original
sudo nano /usr/local/nginx/conf/nginx.conf

Nou 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;
}   
}
}

Premeu Ctrl + X per sortir. Digues "sí" per desar els canvis.

Podeu trobar instruccions clares i exemples de les variables possibles en aquest nginx.conffitxer si consulteu "directives nginx-rtmp" al vostre motor de cerca preferit. He estat utilitzant nginx-rtmp amb HLS des de fa uns quants anys, sense utilitzar les directives "permetre la publicació" i "denegar la publicació" i no he vist cap cas de persones que utilitzen o envaeixen els meus servidors de vídeo. Així que no vaig incloure aquestes directrius aquí. Llegiu i afegiu aquestes directives si voleu.

Després de canviar el nginx.conffitxer, heu de reiniciar Nginx per utilitzar la nova configuració:

sudo service nginx restart

Vigileu atentament els missatges d'error de Nginx i solucioneu els errors que puguin haver estat causats per problemes d'ortografia, propietat de carpetes o permisos. Si no teniu cap missatge d'error, ja esteu preparat per crear el vostre flux de codificació.

Heu de tenir un codificador de vídeo per crear la reproducció. Utilitzo OBS (Open Broadcaster Software), que és de codi obert i em funciona bé. Hi ha altres solucions per triar, que estan fora de l'abast d'aquest tutorial. No parlaré de tot sobre la configuració d'un codificador de vídeo RTMP. Tot i això, requereixen aproximadament les mateixes variables d'entrada. Els paràmetres clau que haureu d'introduir per utilitzar la meva nginx.confconfiguració exacta i per funcionar bé a la majoria de jugadors/navegadors/plataformes són els següents:

  1. Codificador-x264
  2. Velocitat de bits variable (no CBR ni velocitat de bits constant), qualitat més alta
  3. Taxa de bits màxima: 600 kbps
  4. Àudio-Codec-AAC
  5. Format d'àudio-44,1 kHz
  6. Taxa de bits d'àudio: 64 kbps
  7. URL de FMS: "rtmp://my-ip:1935/live"
  8. Clau de reproducció: "la meva-clau de reproducció"
  9. Resolució-640x480
  10. FPS (fotogrames per segon) -30
  11. CFR (Constant Frame Rate) - Sí
  12. Interval de fotograma clau: 2 segons (un fotograma clau cada 2 segons)
  13. Perfil de codificació x264: línia base (pot funcionar amb el principal, depèn del reproductor utilitzat)
  14. CPU x264 present-molt ràpid

Recomano provar diferents codificadors i experimentar amb ells. És possible que desitgeu una relació d'aspecte àmplia, o la vostra càmera (o altres materials de transmissió) ho poden exigir. Si és així, assegureu-vos de canviar aquesta informació al vostre codificador i també la relació d'aspecte que apareix a la secció exec-ffmpeg del nginx.conffitxer que he subministrat; en cas contrari, obtindreu alguns canals de vídeo d'aspecte boig.

Un cop configurat el codificador, podeu provar-ho tot. Inicieu el codificador amb la vostra càmera web o algun tipus de pinso de prova que s'hi executi. Podeu veure la vostra emissió en aquest moment amb el reproductor VLC mitjançant URL com ara:

http://my-ip/live/my-stream-key/index.m3u8
http://my-ip/mobile/my-stream-key/index.m3u8

Aquests són per al vostre flux de vídeo principal i el vostre mòbil, respectivament. Substituïu la vostra IP i la clau de transmissió en conseqüència.

Després d'haver emès correctament la vostra primera transmissió, comproveu (mitjançant ssh o ftp) que la vostra emissió en directe s'hagi gravat a la /video_recordingscarpeta del vostre Vultr VPS. També podeu provar de reproduir aquest fitxer gravat a VLC amb una URL com:

rtmp://my-ip/vod/filename.flv

Les estadístiques de Nginx també estan disponibles (amb Nginx stub_status). Per veure les estadístiques de visitants/espectadors, accediu a:

http://my-ip/stats

Per veure el vostre vídeo en una pàgina web, necessitareu un reproductor incrustable. Hi ha molts reproductors incrustables disponibles que reproduiran vídeo HLS. Fa uns anys que faig servir JW Player, però la versió gratuïta no jugarà HLS. Flowplayer i Bitdash de Bitmovin (entre altres solucions) són prou generosos com per oferir una versió no comercial dels seus reproductors de manera gratuïta que farà que el vostre flux HLS estigui incrustat en una pàgina web. Per a aquest article, els he provat tots dos i he trobat que tots dos funcionen força bé amb el meu servidor de vídeo basat en Vultr/Nginx. Mostraré breument com vaig fer que Flowplayer vagi amb la meva màquina de prova.

Si utilitzeu la transmissió HLS en directe d'una manera regular, sostinguda o comercial, us animo a comprar una llicència de Flowplayer o del reproductor que decidiu utilitzar. Obtindreu un reproductor que té menys restriccions, més funcions i que es pot marcar a la vostra organització. També rebràs suport, que pot ser molt important. A part del Vultr VPS, aquest és realment l'únic cost associat al projecte.

Abans de fer qualsevol altra cosa, és important tenir cura del que s'anomenen restriccions "entre dominis", que d'altra manera tancarien la vostra capacitat de transmetre en temps real a una pàgina web/lloc web. Creeu un crossdomain.xmlfitxer a la vostra nginx/htmlcarpeta i introduïu-hi instruccions per permetre que les dades flueixin entre dominis:

sudo nano /usr/local/nginx/html/crossdomain.xml

Primer copieu (des d'aquesta pàgina) i després enganxeu (clic dret) al camp de l'editor nano les dades XML següents:

<?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>

Premeu Ctrl + O per escriure, després Ctrl + X per desar el fitxer al disc i sortir.

Vaig agafar l'HTML5 (versió 6.0.3) de Flowplayer que em va donar una sèrie de fitxers i una carpeta quan vaig descomprimir. Vaig penjar tots els fitxers i la carpeta en una subcarpeta de la carpeta arrel Nginx/HTML que vaig anomenar "flowplayer". El camí exacte era /usr/local/nginx/html/flowplayer.

Per provar el nostre vídeo quan està incrustat en una pàgina web, creeu un parell de fitxers HTML a l'arrel de la carpeta Nginx/HTML amb nano i ompliu-los amb el contingut següent.

Dossier:

sudo nano /usr/local/nginx/html/hls.html

codi 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>

Dossier:

sudo nano /usr/local/nginx/html/hls_progressive.html

codi 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>

Assegureu-vos de substituir "my-ip" i "my-stream-key" per les vostres dades.

Heu de substituir el camí flowplayer/skin/functional.csspel signe "#" al full d'estil href="#". El programari tutorial elimina el camí. Heu d'emplenar una URL a la src=""part: el programari tutorial, ús http://my-ip/live/my-stream-key/index.m3u8i http://my-ip/mobile/my-stream-key/index.m3u8, l'esborran, respectivament. També heu d'afegir srcetiquetes d' script al capçal per a tots dos jquery-1.11.2.min.jsi per a flowplayer.min.js. El programari tutorial elimina les etiquetes. Podeu trobar com crear aquestes etiquetes mirant el example htmlfitxer inclòs amb el kit de Flowplayer.

Inicieu el codificador amb la vostra càmera web o algun tipus de pinso de prova que s'hi executi. Podeu veure la vostra emissió en un navegador mitjançant els URL següents:

http://my-ip/hls.html
http://my-ip/hls_progressive.html

La primera pàgina només mostra cadascun dels vostres fluxos: el principal i el de la plataforma mòbil. Podreu iniciar-los tots dos i veure'ls. Notareu que el flux de la plataforma mòbil és de mida més petita. Aquests passos són només per assegurar-se que tot funciona.

La segona pàgina mostra un sol flux. Però es configura d'una manera que s'anomena "streaming progressiu". Això vol dir que quan un espectador reprodueix el vídeo, tant el servidor com el reproductor intenten oferir a l'espectador la transmissió d'alta velocitat i alta qualitat si la connexió de l'espectador pot mantenir-la. Si la seva connexió és deficient i no pot mantenir la connexió, es redueix fins a mostrar el flux de bits (mòbil) més baix que és 200 kbps més baix d'amplada de banda. Si ho desitgeu, podeu crear fluxos més progressius i progressius amb ffmpeg i configurar-los amb el meu exemple.

He provat aquesta configuració en un sol nucli, 1 GB Vultr VPS i he trobat que amb una única transmissió en directe, a més de la transmissió de flux mòbil que crea amb ffmpeg, l'ús de la CPU era inferior al 35% i només havia consumit 100 MB de el meu 1 GB de RAM. Ara és una configuració molt eficient.

Si teniu previst reproduir un vídeo que és molt més gran en dimensions de píxels que SD, és possible que hàgiu d'utilitzar un VPS més potent. Vaig tenir curiositat per això i vaig executar el meu flux principal fins a 1280 x 960 píxels i 2 Mbps, posant una càrrega addicional a les coses. Però el VPS encara només utilitzava un 50% de CPU i l'ús de memòria es va mantenir en 100 MB. Vaig afegir una dotzena de visualitzadors/navegadors i gairebé no va fer cap diferència en la càrrega del VPS; només va augmentar l'ample de banda utilitzat. Estic segur que la creació de fluxos addicionals trans-rated amb ffmpeg continuaria posant càrrega addicional al sistema.

He utilitzat aquest tipus de servidor en entorns de producció amb entre 50 i 100 usuaris simultàniament i he trobat que l'ús de recursos augmentava molt poc amb l'augment de les connexions de visualització. Experimenta amb ell. Però crec que la majoria dels usuaris estarien contents amb un VPS d'1 GB d'un sol nucli. Gaudeix del teu nou servidor de transmissió HLS!


Leave a Comment

Creació dun bloc Jekyll a Ubuntu 16.04

Creació dun bloc Jekyll a Ubuntu 16.04

Utilitzeu un sistema diferent? Jekyll és una gran alternativa a WordPress per crear blocs o compartir contingut. No requereix cap base de dades i és molt fàcil

Com instal·lar Squid Proxy a CentOS

Com instal·lar Squid Proxy a CentOS

Squid és un popular programa Linux gratuït que us permet crear un servidor intermediari web de reenviament. En aquesta guia, veureu com instal·lar Squid a CentOS per convertir-vos-hi

Instal·lant InfluxDB a Ubuntu 14

Instal·lant InfluxDB a Ubuntu 14

Introducció InfluxDB és una base de dades de sèries temporals distribuïda, de codi obert, sense dependències externes. Sí, heu llegit el paràgraf sense dependències externes

Configura Red5 Media Server a Ubuntu 16.04

Configura Red5 Media Server a Ubuntu 16.04

Utilitzeu un sistema diferent? Red5 és un servidor multimèdia de codi obert implementat a Java que us permet executar aplicacions Flash multiusuari com ara la transmissió en directe.

Com instal·lar Vanilla Forum a Ubuntu 16.04

Com instal·lar Vanilla Forum a Ubuntu 16.04

Utilitzeu un sistema diferent? Vanilla Forum és una aplicació de fòrum de codi obert escrita en PHP. És totalment personalitzable, fàcil d'utilitzar i admet externa

Com instal·lar Kanboard a Ubuntu 18.04 LTS

Com instal·lar Kanboard a Ubuntu 18.04 LTS

Utilitzeu un sistema diferent? Introducció Kanboard és un programa de gestió de projectes gratuït i de codi obert dissenyat per facilitar i visualitzar

Com instal·lar Kanboard a Debian 9

Com instal·lar Kanboard a Debian 9

Utilitzeu un sistema diferent? Introducció Kanboard és un programa de gestió de projectes gratuït i de codi obert dissenyat per facilitar i visualitzar

Com instal·lar Tiny Tiny RSS Reader en un FreeBSD 11 FAMP VPS

Com instal·lar Tiny Tiny RSS Reader en un FreeBSD 11 FAMP VPS

Utilitzeu un sistema diferent? Tiny Tiny RSS Reader és un lector i agregador de notícies basats en web (RSS/Atom) de codi obert i gratuït, dissenyat per

Com instal·lar Gitea a Debian 9

Com instal·lar Gitea a Debian 9

Utilitzeu un sistema diferent? Gitea és un sistema alternatiu de control de versions autoallotjat i de codi obert impulsat per Git. Gitea està escrit en Golang i ho és

Com instal·lar Wiki.js a FreeBSD 11

Com instal·lar Wiki.js a FreeBSD 11

Utilitzeu un sistema diferent? Wiki.js és una aplicació wiki moderna de codi obert i gratuïta construïda a Node.js, MongoDB, Git i Markdown. El codi font de Wiki.js és públic

Com instal·lar Gitea a Ubuntu 18.04

Com instal·lar Gitea a Ubuntu 18.04

Utilitzeu un sistema diferent? Gitea és un sistema alternatiu de control de versions de codi obert i autoallotjat impulsat per git. Gitea està escrit en Golang i ho és

Com instal·lar Thelia 2.3 a Debian 9

Com instal·lar Thelia 2.3 a Debian 9

Utilitzeu un sistema diferent? Thelia és una eina de codi obert per crear llocs web de negocis electrònics i gestionar contingut en línia escrit en PHP. Codi font de Thelia i

Com instal·lar Microweber a CentOS 7

Com instal·lar Microweber a CentOS 7

Utilitzeu un sistema diferent? Microweber és un CMS d'arrossegar i deixar anar de codi obert i una botiga en línia. El codi font de Microweber està allotjat a GitHub. Aquesta guia us mostrarà

Instal·lació de Microweber a Ubuntu 16.04

Instal·lació de Microweber a Ubuntu 16.04

Utilitzeu un sistema diferent? Microweber és un CMS d'arrossegar i deixar anar de codi obert i una botiga en línia. El codi font de Microweber està allotjat a GitHub. Aquesta guia us mostrarà

Com instal·lar MODX Revolution en un Ubuntu 16.04 LAMP VPS

Com instal·lar MODX Revolution en un Ubuntu 16.04 LAMP VPS

Utilitzeu un sistema diferent? MODX Revolution és un sistema de gestió de continguts (CMS) ràpid, flexible, escalable, gratuït i de codi obert, escrit i

Com instal·lar Vanilla Forum a CentOS 7

Com instal·lar Vanilla Forum a CentOS 7

Utilitzeu un sistema diferent? Vanilla Forum és una aplicació de fòrum de codi obert escrita en PHP. És totalment personalitzable, fàcil d'utilitzar i admet externa

Com instal·lar Mattermost 4.1 a CentOS 7

Com instal·lar Mattermost 4.1 a CentOS 7

Utilitzeu un sistema diferent? Mattermost és una alternativa autoallotjada de codi obert al servei de missatgeria Slack SAAS. En altres paraules, amb Mattermost, ca

Com instal·lar dotCMS a Ubuntu 16.04

Com instal·lar dotCMS a Ubuntu 16.04

Utilitzeu un sistema diferent? DotCMS és un sistema de gestió de continguts de codi obert i de grau empresarial escrit en Java. Conté gairebé totes les funcions necessàries t

Com instal·lar Pagekit 1.0 CMS en un VPS FreeBSD 11 FAMP

Com instal·lar Pagekit 1.0 CMS en un VPS FreeBSD 11 FAMP

Utilitzeu un sistema diferent? Pagekit 1.0 CMS és un sistema de gestió de continguts (CMS) bonic, modular, extensible i lleuger, gratuït i de codi obert amb

Com instal·lar BigTree CMS en un Fedora 26 LAMP VPS

Com instal·lar BigTree CMS en un Fedora 26 LAMP VPS

Utilitzeu un sistema diferent? BigTree CMS 4.2 és un sistema de gestió de continguts (CMS) ràpid i lleuger, gratuït i de codi obert, amb una àmplia

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

La Intel·ligència Artificial no està en el futur, és aquí mateix en el present. En aquest bloc Llegiu com les aplicacions d'Intel·ligència Artificial han afectat diversos sectors.

Atacs DDOS: una breu visió general

Atacs DDOS: una breu visió general

També ets víctima d'atacs DDOS i estàs confós sobre els mètodes de prevenció? Llegiu aquest article per resoldre les vostres consultes.

Us heu preguntat mai com guanyen diners els pirates informàtics?

Us heu preguntat mai com guanyen diners els pirates informàtics?

Potser haureu sentit que els pirates informàtics guanyen molts diners, però us heu preguntat mai com guanyen aquest tipus de diners? anem a discutir.

Invents revolucionaris de Google que us facilitaran la vida.

Invents revolucionaris de Google que us facilitaran la vida.

Vols veure els invents revolucionaris de Google i com aquests invents van canviar la vida de tots els éssers humans actuals? A continuació, llegiu al bloc per veure els invents de Google.

Divendres essencial: què va passar amb els cotxes impulsats per IA?

Divendres essencial: què va passar amb els cotxes impulsats per IA?

El concepte de cotxes autònoms per sortir a les carreteres amb l'ajuda de la intel·ligència artificial és un somni que tenim des de fa temps. Però malgrat les diverses promeses, no es veuen enlloc. Llegeix aquest blog per saber-ne més...

Singularitat tecnològica: un futur llunyà de la civilització humana?

Singularitat tecnològica: un futur llunyà de la civilització humana?

A mesura que la ciència evoluciona a un ritme ràpid, fent-se càrrec de molts dels nostres esforços, també augmenten els riscos de sotmetre'ns a una singularitat inexplicable. Llegeix, què pot significar per a nosaltres la singularitat.

Evolució de lemmagatzematge de dades – Infografia

Evolució de lemmagatzematge de dades – Infografia

Els mètodes d'emmagatzematge de les dades que han anat evolucionant poden ser des del naixement de les dades. Aquest bloc tracta l'evolució de l'emmagatzematge de dades a partir d'una infografia.

Funcionalitats de les capes darquitectura de referència de Big Data

Funcionalitats de les capes darquitectura de referència de Big Data

Llegeix el blog per conèixer de la manera més senzilla les diferents capes de l'Arquitectura Big Data i les seves funcionalitats.

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

6 avantatges sorprenents de tenir dispositius domèstics intel·ligents a les nostres vides

En aquest món digital, els dispositius domèstics intel·ligents s'han convertit en una part crucial de les vides. A continuació, es mostren alguns avantatges sorprenents dels dispositius domèstics intel·ligents sobre com fan que la nostra vida valgui la pena i sigui més senzilla.

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Lactualització del suplement de macOS Catalina 10.15.4 està causant més problemes que no pas solucions

Recentment, Apple va llançar macOS Catalina 10.15.4, una actualització de suplements per solucionar problemes, però sembla que l'actualització està causant més problemes que provoquen el bloqueig de les màquines Mac. Llegiu aquest article per obtenir més informació