Cuando escuché sobre la transmisión por primera vez, fue en el contexto de la transmisión en vivo con una cámara web. Entonces, un host está transmitiendo contenido de video y el otro está recibiendo el contenido de video. Entonces, ¿esto es transmisión? Bueno ... sí ... pero una transmisión en vivo es un concepto concreto, y creo que la pregunta se refiere al concepto abstracto de Streaming. Ver https://en.wikipedia.org/wiki/Live_streaming
Así que sigamos adelante.
El video no es el único recurso que se puede transmitir. El audio también se puede transmitir. Estamos hablando de Streaming de medios ahora. Ver https://en.wikipedia.org/wiki/Streaming_media . El audio se puede entregar desde el origen al destino de varias maneras. Así que comparemos algunos métodos de entrega de datos entre sí.
Descarga de archivos clásicos La descarga de archivos
clásicos no se realiza en tiempo real. Antes de utilizar el archivo, deberá esperar hasta que se complete la descarga.
Descarga
progresiva Los fragmentos de descarga progresiva descargan datos del archivo multimedia transmitido a un búfer temporal. Los datos en ese búfer son viables: los datos de audio y video en el búfer se pueden reproducir. Debido a eso, los usuarios pueden ver / escuchar el archivo multimedia transmitido durante la descarga. Es posible el avance rápido y el rebobinado, fuera de curso dentro del búfer. De todos modos, la descarga progresiva no es transmisión en vivo.
La transmisión
ocurre en tiempo real y fragmenta los datos. La transmisión se implementa en transmisiones en vivo. Los clientes que escuchan la transmisión no pueden avanzar o retroceder rápidamente. En las transmisiones de video, los datos se descartan después de la reproducción.
Un servidor de transmisión mantiene una conexión bidireccional con su cliente, mientras que un servidor web cierra la conexión después de una respuesta del servidor.
El audio y el video no son lo único que se puede transmitir. Echemos un vistazo al concepto de flujos en el manual de PHP.
una secuencia es un objeto de recurso que exhibe un comportamiento de transmisión. Es decir, puede leerse o escribirse de forma lineal, y puede ser capaz de buscar fseek () en una ubicación arbitraria dentro de la secuencia. Enlace: https://www.php.net/manual/en/intro.stream.php
En PHP, un recurso es una referencia a una fuente externa como un archivo, conexión de base de datos. En otras palabras, una secuencia es una fuente que se puede leer o escribir. Entonces, si trabajó con fopen()
, ya trabajó con transmisiones.
Un ejemplo de un archivo de texto que está sujeto a 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
Los archivos zip también se pueden transmitir. Además de eso, la transmisión no se limita a los archivos. Las conexiones HTTP, FTP, SSH y Entrada / Salida también se pueden transmitir.
¿Qué dice wikipedia sobre el concepto de Streaming?
En informática, una secuencia es una secuencia de elementos de datos disponibles a lo largo del tiempo. Una corriente puede considerarse como elementos en una cinta transportadora que se procesan uno a la vez en lugar de en grandes lotes.
Ver: https://en.wikipedia.org/wiki/Stream_%28computing%29 .
Wikipedia enlaza con esto: https://srfi.schemers.org/srfi-41/srfi-41.html
y los escritores tienen esto que decir sobre las transmisiones:
Las secuencias, a veces llamadas listas diferidas, son una estructura de datos secuenciales que contiene elementos calculados solo a pedido. Una secuencia es nula o es un par con una secuencia en su cdr. Dado que los elementos de una secuencia se calculan solo cuando se accede a ellos, las secuencias pueden ser infinitas.
Entonces, un Stream es en realidad una estructura de datos.
Mi conclusión: una secuencia es una fuente que puede contener datos que se pueden leer o escribir de forma secuencial. Una secuencia no lee todo lo que contiene la fuente a la vez, sino que lee / escribe secuencialmente.
Enlaces útiles:
- http://www.slideshare.net/auroraeosrose/writing-and-using-php-streams-and-sockets-zendcon-2011 Proporciona una presentación muy clara
- 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