Quando ho sentito parlare dello streaming per la prima volta, era nel contesto dello streaming live con una webcam. Pertanto, un host sta trasmettendo contenuti video e l'altro host sta ricevendo i contenuti video. Quindi questo streaming? Bene ... sì ... ma un live stream è un concetto concreto e penso che la domanda si riferisca al concetto astratto di Streaming. Vedi https://en.wikipedia.org/wiki/Live_streaming
Quindi andiamo avanti.
Il video non è l'unica risorsa che può essere trasmessa in streaming. Anche l'audio può essere riprodotto in streaming. Quindi stiamo parlando di streaming media ora. Vedi https://en.wikipedia.org/wiki/Streaming_media . L'audio può essere trasmesso dalla sorgente alla destinazione in numerosi modi. Quindi confrontiamo alcuni metodi di consegna dei dati tra loro.
Download di file classico Il download di file
classico non avviene in tempo reale. Prima di utilizzare il file, dovrai attendere fino al completamento del download.
Download
progressivo I blocchi di download progressivo scaricano i dati dal file multimediale in streaming in un buffer temporaneo. I dati in quel buffer sono fattibili: i dati audio-video nel buffer sono riproducibili. Per questo motivo gli utenti possono guardare / ascoltare il file multimediale in streaming durante il download. L'avanzamento rapido e il riavvolgimento sono possibili, fuori dal campo con il buffer. Ad ogni modo, il download progressivo non è streaming live.
Streaming
Succede in tempo reale e blocchi di dati. Lo streaming è implementato nelle trasmissioni in diretta. I clienti che ascoltano la trasmissione non possono avanzare o riavvolgere rapidamente. Negli stream video, i dati vengono eliminati dopo la riproduzione.
Un server di streaming mantiene una connessione a 2 vie con il suo client, mentre un server Web chiude la connessione dopo una risposta del server.
Audio e video non sono l'unica cosa che può essere trasmessa in streaming. Diamo un'occhiata al concetto di stream nel manuale di PHP.
uno stream è un oggetto risorsa che presenta comportamenti scorrevoli. Cioè, può essere letto o scritto in modo lineare e può essere in grado di cercare () in una posizione arbitraria all'interno del flusso. Link: https://www.php.net/manual/en/intro.stream.php
In PHP, una risorsa è un riferimento a una fonte esterna come un file, una connessione al database. Quindi, in altre parole, uno stream è una fonte che può essere letta o scritta. Quindi, se hai lavorato con fopen()
, hai già lavorato con i flussi.
Un esempio di un file di testo soggetto allo streaming:
// Let's say that cheese.txt is a file that contains this content:
// I like cheese, a lot! My favorite cheese brand is Leerdammer.
$fp = fopen('cheese.txt', 'r');
$str8 = fread($fp, 8); // read first 8 characters from stream.
fseek($fp, 21); // set position indicator from stream at the 21th position (0 = first position)
$str30 = fread($fp, 30); // read 30 characters from stream
echo $str8; // Output: I like c
echo $str30; // Output: My favorite cheese brand is L
Anche i file zip possono essere trasmessi in streaming. Inoltre, lo streaming non è limitato ai file. È inoltre possibile eseguire lo streaming di connessioni HTTP, FTP, SSH e Input / Output.
Cosa dice Wikipedia sul concetto di streaming?
Nell'informatica, uno stream è una sequenza di elementi di dati resi disponibili nel tempo. Un flusso può essere pensato come elementi su un nastro trasportatore che vengono elaborati uno alla volta anziché in grandi lotti.
Vedi: https://en.wikipedia.org/wiki/Stream_%28computing%29 .
Wikipedia si collega a questo: https://srfi.schemers.org/srfi-41/srfi-41.html
e gli autori hanno questo da dire sugli stream:
Gli stream, a volte chiamati elenchi pigri, sono una struttura di dati sequenziale contenente elementi calcolati solo su richiesta. Uno stream è nullo o è una coppia con uno stream nel suo cdr. Poiché gli elementi di un flusso vengono calcolati solo quando si accede, i flussi possono essere infiniti.
Quindi uno Stream è in realtà una struttura di dati.
La mia conclusione: uno stream è una fonte che può contenere dati che possono essere letti o scritti in modo sequenziale. Un flusso non legge tutto ciò che contiene la fonte in una sola volta, legge / scrive in sequenza.
Link utili:
- http://www.slideshare.net/auroraeosrose/writing-and-using-php-streams-and-sockets-zendcon-2011 Fornisce una presentazione molto chiara
- https://www.sk89q.com/2010/04/introduction-to-php-streams/
- http://www.netlingo.com/word/stream-or-streaming.php
- http://www.brainbell.com/tutorials/php/Using_PHP_Streams.htm
- http://www.sitepoint.com/php-streaming-output-buffering-explained/
- http://php.net/manual/en/wrappers.php
- http://www.digidata-lb.com/streaming/Streaming_Proposal.pdf
- http://www.webopedia.com/TERM/S/streaming.html
- https://en.wikipedia.org/wiki/Stream_%28computing%29
- https://srfi.schemers.org/srfi-41/srfi-41.html