У меня есть Chromecast и URL-адрес файла mp4 онлайн. У меня также есть подключение для загрузки 2 Мбит/с, что является жалкой и делает прямую буферизацию для Chromecast слишком медленной. Вот что я пробовал до сих пор:Chromecast PHP Buffer MP4
Через консоль разработчика я просто установил location.href в онлайн-адрес mp4. Chromecast будет буферизоваться в течение 20 секунд, воспроизводить видео за 10 секунд, а затем снова буферизировать. Таким образом, через консоль я приостановил видео и давал ему буфер в течение 5 минут. Когда я позволил ему снова сыграть, он играл около 15 секунд, а затем потерял весь прогресс и должен был быть возвращен на главный экран.
Поскольку я не хочу дождаться завершения полной загрузки mp4, я в настоящее время пытаюсь это сделать: я задерживаю mp4 в локальном файле, который находится в моем каталоге htdocs, и затем я направляю Chromecast в расположение этого файла. Однако при открытии файла mp4 thorugh Chrome (браузер) вместо воспроизведения отображается приглашение на загрузку, а Chromecast возвращается на главный экран.
Я реализовал буферизацию в PHP, и это выглядит следующим образом:
$bufferSource = 'http://example.com/path/to/file.mp4';
$bufferedReader = fopen($bufferSource, 'r');
while(!($finished = feof($bufferedReader))){
if($finished !== false){ break; }
//get onle line
$buffer = fgets($bufferedReader);
file_put_contents('buffer.mp4', $buffer, FILE_APPEND);
}
fclose($bufferedReader);
Я знаю, что PHP делает свою работу, как я могу посмотреть размер файла растет на моем компьютере, и я могу открыть файл с VLC. Может быть, еще один PHP-скрипт, который я мог бы сделать, чтобы получить доступ к локально буферизованному файлу mp4, который имитирует «буферность», поэтому Chrome не показывает диалог загрузки, а буферизирует файл, как и Chromecast?
EDIT: Еще одна вещь. Я не направляю Chromecast в скрипт PHP. Я фактически направляю его непосредственно в файл buffer.mp4.
На самом деле, я использую только скрипт PHP для буферизации в файл. Я не имею доступа к скрипту PHP на Chromecast, а скорее к самому выпущенному файлу, где, я думаю, заголовок автоматически включается из-за буферизации файла сценария. Таким образом, сервер-> клиентский и локальный сервер-> Chromecast - это два отдельных независимых процесса. – arik
@ arik-so Так или иначе ваша проблема такая же. Ваш локальный сервер не настроен на отправку правильных заголовков содержимого. Если вы опубликуете, какой сервер вы используете, я могу направить вас более конкретно. – Brad
Я использую локальный сервер XAMPP. В этом случае завтра я попытаюсь сделать еще одну страницу, которая будет обращаться к файлу после отправки заголовка mp4. – arik