Когда я впервые услышал о потоковой передаче, это было в контексте прямой трансляции с веб-камеры. Итак, один хост транслирует видео контент, а другой хост получает видео контент. Так это потоковое? Ну ... да ... но прямой эфир - это конкретная концепция, и я думаю, что этот вопрос относится к абстрактной концепции потоковой передачи. Смотрите https://en.wikipedia.org/wiki/Live_streaming
Итак, давайте двигаться дальше.
Видео - не единственный ресурс, который можно транслировать. Аудио также может передаваться в потоковом режиме. Итак, мы сейчас говорим о потоковом медиа. Смотрите https://en.wikipedia.org/wiki/Streaming_media . Аудио может быть доставлено от источника к цели множеством способов. Итак, давайте сравним некоторые методы доставки данных друг с другом.
Загрузка классического файла Загрузка
классического файла не происходит в режиме реального времени. Прежде чем приступить к использованию файла, вам придется подождать, пока загрузка не будет завершена.
Прогрессивная загрузка
Части прогрессивной загрузки загружают данные из потокового медиа-файла во временный буфер. Данные в этом буфере работоспособны: аудио-видео данные в буфере воспроизводимы. Благодаря этому пользователи могут смотреть / слушать потоковый медиафайл во время загрузки. Возможна быстрая перемотка вперед и назад, вне буфера. В любом случае, прогрессивная загрузка - это не прямая трансляция.
Потоковая передача
происходит в режиме реального времени и порции данных. Потоковая передача реализована в прямом эфире. Клиенты, слушающие трансляцию, не могут перематывать вперед или назад. В видеопотоках данные отбрасываются после воспроизведения.
Потоковый сервер поддерживает двустороннее соединение со своим клиентом, а веб-сервер закрывает соединение после ответа сервера.
Аудио и видео не единственное, что можно транслировать. Давайте посмотрим на концепцию потоков в руководстве по PHP.
Поток - это ресурсный объект, который демонстрирует поведение в потоке. То есть он может считываться или записываться линейным образом и может быть способен выполнять fseek () в произвольном месте в потоке. Ссылка: https://www.php.net/manual/en/intro.stream.php
В PHP ресурс - это ссылка на внешний источник, такой как файл, соединение с базой данных. Другими словами, поток - это источник, который можно прочитать или записать. Итак, если вы работали сfopen()
, то вы уже работали с потоками.
Пример текстового файла, который подвергается потоковой передаче:
// 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-файлы также могут быть потоковыми. Кроме того, потоковая передача не ограничивается файлами. HTTP, FTP, SSH соединения и ввод / вывод также могут быть потоковыми.
Что википедия говорит о концепции потоковой передачи?
В информатике поток - это последовательность элементов данных, доступных с течением времени. Поток можно рассматривать как элементы на конвейерной ленте, обрабатываемые по одному, а не большими партиями.
Смотрите: https://en.wikipedia.org/wiki/Stream_%28computing%29 .
Википедия ссылается на это: https://srfi.schemers.org/srfi-41/srfi-41.html,
и авторы могут сказать следующее о потоках:
Потоки, иногда называемые отложенными списками, представляют собой последовательную структуру данных, содержащую элементы, вычисляемые только по запросу. Поток либо нулевой, либо является парой с потоком в его cdr. Поскольку элементы потока вычисляются только при обращении, потоки могут быть бесконечными.
Таким образом, поток на самом деле является структурой данных.
Мой вывод: поток - это источник, который может содержать данные, которые можно читать или записывать в последовательном порядке. Поток не читает сразу все, что содержит источник, он читает / записывает последовательно.
Полезные ссылки:
- http://www.slideshare.net/auroraeosrose/writing-and-using-php-streams-and-sockets-zendcon-2011 Обеспечивает очень четкое представление
- 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