Подргузка мультимедиа PHP

A4
На сайте с 05.01.2012
Offline
55
686

Просматривая сайт файрбагом(от балды) обнаружил интересную особенность - видеоклип на сайте подгружается по частям, то есть не весь сразу а по маленьким отрезкам, и подумал - мне это будет полезно.

Вот ссылка на сам сайт с такой реализацией проигрывателя http://www.clipyou.ru/catalog/47413/

Если смотреть видео, то вот что выдает нам файрбаг:

Такой способ передачи данных очень выгоден хотя-бы тем, что видео не подгружается по пол часа.

И мне интересно - как это сделать. Мой профиль не видео, и воровать с указанного выше сайта я ничего не собираюсь. Но сама технология передачи данных заинтересовала. И я решил попытаться использовать ее в своем скрипте.

Дело в том что такая реализация php части плеера:


header('Content-type: application/octet-stream');
while(!feof($fp)){
$buffer=fread($fp, 2048);
echo $buffer;
flush();
}

не катит. Хоть и данные передаются по частям, js плеер все равно ждет, пока не будет скачан весь файл, и только потом начинает проигрывание. Это очень сильно замедляет работу скрипта. Ну и конечного пользователя будет сильно злить, что естественно.

Уважаемые форумчане - кто может натолкнуть на идею - в какую сторону копать?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

и воровать с указанного выше сайта я ничего не собираюсь.

А кто говорит воровать? Просто посмотрите как там это реализовано.

По Вашей логике получается, что и сайт Вы тоже не можете делать, ведь HTML, CSS, PHP и MySQL не Вы первый используете, а значит воруете😂

Подпись))
A4
На сайте с 05.01.2012
Offline
55
#2
Милованов Ю.С:
А кто говорит воровать? Просто посмотрите как там это реализовано.

да смотрю) Только вот ведь беда - серверной части то не видно((

siv1987
На сайте с 02.04.2009
Offline
427
#3
aftamat4ik:
да смотрю) Только вот ведь беда - серверной части то не видно((

Серверная часть за запросы в браузере не отвечает.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#4

Задача серверной части - отдать определенный кусок файла. Задача браузера - запросить этот кусок.

UPDATE: Ваша задача - научить браузер запрашивать этот кусок;)

A4
На сайте с 05.01.2012
Offline
55
#5
Милованов Ю.С:
Ваша задача - научить браузер запрашивать этот кусок

ну это можно через js реализовать) просто гложат меня сомнения... А вдруг там какая-то иная технология используется. Я конечно могу при проигрывании половины закачанного отрезка начать закачивать еще один такой-же отрезок и когда проигрывание первого отрезка закончится перейти ко второму НО. Не плавно это будет(на мой взгляд) Переключение вещ довольно муторная, особенно в soundmanager 2(это мой плеер). Ну хотя думаю стоит попробовать...

beginerx
На сайте с 13.07.2009
Offline
173
#6

есть потоковые технлогии, поддерживаются во флэш и вроде де бы в html5/js

но нужна и серверная часть, на форуме обсуждались в другой ветке где

он-лайн кинотеатры обсуждают... По звуку потоковому есть сайт WinAmp

и там есть бесплатный потоковый сервер для звука, вроде даже с исходниками...(интернет радио)

Также видел в интернет исходники видео чата на флэше... так что наверное все велосипеды

давно уже изобретены...

>>>Скорость и Реакция<<< (https://vk.com/app4629907 ): онлайн тренировка скорости и времени реакции.... (https://vk.com/app4612117 )... (https://vk.com/club18740762 ).
A4
На сайте с 05.01.2012
Offline
55
#7
Милованов Ю.С:
Задача серверной части - отдать определенный кусок файла. Задача браузера - запросить этот кусок.

В общем реализовал я на стороне сервера отдачу файла частями, на стороне клиента скрипт посредством ajax отправляет запросы на сервер и тот отдает данные. По теперь трек воспроизводится, НО! он воспроизводится с небольшими паузами(я свел их к минимуму, но они ЕСТЬ!) попытки избежать пауз результатов не принесли. Вот что выдает firebug теперь, когда я воспроизвожу песню:

Воспроизведение следующей части начинается когда воспроизведены 98,95% текущей части. Загрузка начинается когда проиграны 30% текущей части. несмотря на это заметны дефекты, и они серьезные. В некоторых треках все играет нормально, в некоторых нет. Это скорее всего связано с тем что длительность воспроизведения 2% из оставшейся части всегда разная. Ведь есть треки по 3 мин а есть по 7-9 мин. И получается что у некоторых треков 2% - это какие-то 0,5 - 1 сек или меньше, а у каких-то треков это 5сек. Секундные помехи не так заметны как 5 секундные. Я в тупике. Нет, МОЖНО! написать сложный и низкокачественный(говнокод) алгоритм определения длительности песни исходя из ее размера(я где-то библиотеки видел, позволяющие получать значения ipv3 тегов).

Что-то на последнее меня не тянет, тем более что снижение качества звучания даже на 1 сек - неприемлемо...

Может есть еще варианты?

---------- Добавлено 18.03.2013 в 00:15 ----------

Ведь отправляет же flash плеер stream серверу запросы. Каким образом сервер на них отвечает, заголовки и прочее... Я сам буржунет рою - пока ничего не нашел кроме вот такой глупости хД http://sourceforge.net/projects/php-radio/ сейчас ломаю над этой штукой голову. К стати без толку. Исходников там нет или я не там смотрю...

---------- Добавлено 18.03.2013 в 00:35 ----------

вот к слову один из вариантов реализации похожей идеи своими руками.

http://wiki.secondlife.com/wiki/Stream_Music_In_PHP

Тут правда придется читать в файле ipv3 теги, а это требует установки доп. расширения на php, что для модуля Неприемлимо(

L
На сайте с 07.12.2007
Offline
351
#8
aftamat4ik:
В общем реализовал я на стороне сервера отдачу файла частями

Была похожая тема, глянь, может там что полезное есть.

PS: Есть модуль ngx_http_flv_module - серверная поддержка псевдо-стриминга для файлов Flash Video FLV (там по первой ссылке).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий