Буферизация потока.

Arty

Новичок
Приветствую!
Имеется проигрывающее устройство с апачем, php и возможностью воспроизводить допустим mp4 из сети. Но бывают ситуации когда канал нестабилен соответственно при прямом показе по линку картинка срывается. Теоретически предполагается что предварительное кэширование нестабильного потока должно помочь (какоето время скорость скачивания выше необходимой, какоето - ниже, а в среднем нормальное).
Организовано через внутренний прокси - т.е. показывает как бы сам себе с localhost/proxy.php?link=http://www.example.com/sample.mp4
Простой вариант:
PHP:
<?php
$link = isset($_GET['link']) ? $_GET['link'] : "null";
    header('HTTP/1.1 200 OK');
    header('Content-Type: video/mp4');
    header('Content-Length: 9684213');
    header('Connection: keep-alive');
    $cmd = "wget -qO- '$link' pipe:1 | cat";
    passthru($cmd);
?>
Можно без cat, можно сделать через fsockopen и т.д. а не wget, но дело не в этом, а в том как бы выдать результат фонового скачивания порциями к примеру 2000000 как только такая порция будет готова?

Чую что может пригодиться ob_start, ob_get_length, ob_flush и т.п. функции контроля вывода, но как применить не понимаю.

Кроме того как второстепенная задачка - Content-Length: который сейчас вбит железно, но на самом то деле должен узнаться до выдачи заголовка.
 

Arty

Новичок
Нет.. устройство должно работать автономно, само себе стрим сервер )
 
Сверху