Als ich zum ersten Mal von Streaming hörte, war es im Zusammenhang mit Live-Streaming mit einer Webcam. Ein Host sendet also Videoinhalte und der andere Host empfängt den Videoinhalt. Also ist das Streaming? Nun ... ja ... aber ein Live-Stream ist ein konkretes Konzept, und ich denke, dass sich die Frage auf das abstrakte Konzept des Streamings bezieht. Siehe https://en.wikipedia.org/wiki/Live_streaming
Also lasst uns weitermachen.
Video ist nicht die einzige Ressource, die gestreamt werden kann. Audio kann auch gestreamt werden. Wir sprechen jetzt über Streaming Media. Siehe https://en.wikipedia.org/wiki/Streaming_media . Audio kann auf vielfältige Weise von der Quelle zum Ziel übertragen werden. Vergleichen wir also einige Datenübermittlungsmethoden miteinander.
Herunterladen klassischer Dateien Das Herunterladen
klassischer Dateien erfolgt nicht in Echtzeit. Bevor Sie die Datei verwenden, müssen Sie warten, bis der Download abgeschlossen ist.
Progressiver Download
Progressive Download-Chunks laden Daten aus der gestreamten Mediendatei in einen temporären Puffer herunter. Daten in diesem Puffer können verarbeitet werden: Audio-Video-Daten im Puffer können abgespielt werden. Aus diesem Grund können Benutzer die gestreamte Mediendatei beim Herunterladen ansehen / anhören. Ein schneller Vor- und Rücklauf ist möglich, natürlich ohne Puffer. Auf jeden Fall ist progressiver Download kein Live-Streaming.
Streaming
Geschieht in Echtzeit und blockiert Daten. Streaming wird in Live-Übertragungen implementiert. Clients, die die Sendung hören, können nicht vor- oder zurückspulen. In Videostreams werden Daten nach der Wiedergabe verworfen.
Ein Streaming-Server unterhält eine bidirektionale Verbindung zu seinem Client, während ein Webserver die Verbindung nach einer Serverantwort schließt.
Audio und Video sind nicht das einzige, was gestreamt werden kann. Schauen wir uns das Konzept der Streams im PHP-Handbuch an.
Ein Stream ist ein Ressourcenobjekt, das ein streambares Verhalten aufweist. Das heißt, es wird gelesen von oder geschrieben in einer linearen Weise, und kann in der Lage sein , innerhalb des Stroms () an eine beliebige Stelle auf fseek. Link: https://www.php.net/manual/en/intro.stream.php
In PHP ist eine Ressource ein Verweis auf eine externe Quelle wie eine Datei oder eine Datenbankverbindung. Mit anderen Worten, ein Stream ist eine Quelle, aus der gelesen oder geschrieben werden kann. Wenn Sie also mit gearbeitet haben fopen()
, haben Sie bereits mit Streams gearbeitet.
Ein Beispiel für eine Textdatei, die einem Streaming unterzogen wird:
// 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
Zip-Dateien können auch gestreamt werden. Darüber hinaus ist das Streaming nicht auf Dateien beschränkt. HTTP-, FTP-, SSH-Verbindungen und Input / Output können ebenfalls gestreamt werden.
Was sagt Wikipedia über das Konzept des Streamings?
In der Informatik ist ein Stream eine Folge von Datenelementen, die im Laufe der Zeit verfügbar gemacht werden. Ein Strom kann als Artikel auf einem Förderband betrachtet werden, die einzeln und nicht in großen Mengen verarbeitet werden.
Siehe: https://en.wikipedia.org/wiki/Stream_%28computing%29 .
Wikipedia-Links dazu: https://srfi.schemers.org/srfi-41/srfi-41.html
und die Autoren haben Folgendes zu Streams zu sagen:
Streams, manchmal auch Lazy Lists genannt, sind eine sequentielle Datenstruktur, die Elemente enthält, die nur bei Bedarf berechnet werden. Ein Stream ist entweder null oder ein Paar mit einem Stream in seiner CDR. Da Elemente eines Streams nur beim Zugriff berechnet werden, können Streams unendlich sein.
Ein Stream ist also eigentlich eine Datenstruktur.
Mein Fazit: Ein Stream ist eine Quelle, die Daten enthalten kann, aus denen sequentiell gelesen oder geschrieben werden kann. Ein Stream liest nicht alles, was die Quelle enthält, auf einmal, sondern liest / schreibt nacheinander.
Nützliche Links:
- http://www.slideshare.net/auroraeosrose/writing-and-using-php-streams-and-sockets-zendcon-2011 Bietet eine sehr übersichtliche Darstellung
- 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