Quand j'ai entendu parler du streaming pour la première fois, c'était dans le cadre du streaming en direct avec une webcam. Ainsi, un hôte diffuse du contenu vidéo et l'autre hôte reçoit le contenu vidéo. Alors, est-ce que ce streaming? Eh bien ... oui ... mais un flux en direct est un concept concret, et je pense que la question se réfère au concept abstrait de Streaming. Voir https://en.wikipedia.org/wiki/Live_streaming
Alors passons à autre chose.
La vidéo n'est pas la seule ressource qui peut être diffusée. L'audio peut également être diffusé. Nous parlons donc maintenant de médias en streaming. Voir https://en.wikipedia.org/wiki/Streaming_media . L'audio peut être transmis de la source à la cible de nombreuses manières. Comparons donc certaines méthodes de livraison de données les unes aux autres.
Téléchargement de fichiers classiques Le téléchargement de fichiers
classiques ne se fait pas en temps réel. Avant de prendre le fichier à utiliser, vous devrez attendre la fin du téléchargement.
Téléchargement
progressif Les blocs de téléchargement progressif téléchargent les données du fichier multimédia diffusé vers une mémoire tampon temporaire. Les données de ce tampon sont exploitables: les données audio-vidéo du tampon sont lisibles. Pour cette raison, les utilisateurs peuvent regarder / écouter le fichier multimédia diffusé pendant le téléchargement. Une avance rapide et un retour rapide sont possibles, hors de la mémoire tampon. Quoi qu'il en soit, le téléchargement progressif n'est pas une diffusion en direct.
Le streaming
se produit en temps réel et segmente les données. Le streaming est implémenté dans les diffusions en direct. Les clients qui écoutent la diffusion ne peuvent pas avancer ou reculer rapidement. Dans les flux vidéo, les données sont supprimées après la lecture.
Un serveur de streaming conserve une connexion bidirectionnelle avec son client, tandis qu'un serveur Web ferme la connexion après une réponse du serveur.
L'audio et la vidéo ne sont pas les seuls à pouvoir être diffusés. Jetons un œil au concept de flux dans le manuel PHP.
un flux est un objet ressource qui présente un comportement diffusable. Autrement dit, il peut être lu ou écrit de manière linéaire, et peut être capable de fseek () vers un emplacement arbitraire dans le flux. Lien: https://www.php.net/manual/en/intro.stream.php
En PHP, une ressource est une référence à une source externe comme un fichier, une connexion à une base de données. En d'autres termes, un flux est une source qui peut être lue ou écrite. Donc, si vous avez travaillé avec fopen()
, vous avez déjà travaillé avec des flux.
Un exemple de fichier texte soumis au 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
Les fichiers Zip peuvent également être diffusés. De plus, le streaming ne se limite pas aux fichiers. Les connexions HTTP, FTP, SSH et les entrées / sorties peuvent également être diffusées.
Que dit wikipedia sur le concept de streaming?
En informatique, un flux est une séquence d'éléments de données rendus disponibles au fil du temps. Un flux peut être considéré comme des articles sur une bande transporteuse traités un par un plutôt que par lots importants.
Voir: https://en.wikipedia.org/wiki/Stream_%28computing%29 .
Wikipédia liens vers ceci: https://srfi.schemers.org/srfi-41/srfi-41.html
et les auteurs ont ceci à dire à propos des flux:
Les flux, parfois appelés listes différées, sont une structure de données séquentielle contenant des éléments calculés uniquement à la demande. Un flux est nul ou est une paire avec un flux dans son cdr. Étant donné que les éléments d'un flux ne sont calculés que lors de l'accès, les flux peuvent être infinis.
Un Stream est donc en fait une structure de données.
Ma conclusion: un flux est une source qui peut contenir des données qui peuvent être lues ou écrites de manière séquentielle. Un flux ne lit pas tout ce que la source contient à la fois, il lit / écrit séquentiellement.
Liens utiles:
- http://www.slideshare.net/auroraeosrose/writing-and-using-php-streams-and-sockets-zendcon-2011 Fournit une présentation très claire
- 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