[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP вывод видео в браузер
obraxys
Доброго времени суток, уважаемые форумчане!
Я новичок в PHP.
Делаю просмотр видео через свой сайт посредством указания URL. Т.е., PHP скрипт качает по прямой ссылке видео и выдает его в браузер. У меня такая проблема. Если я указываю в заголовках "Content-Disposition: attachment; filename...", то собственно видео в виде файла скачивается без проблем. Но как только убираю эту строчку, т.е. хочу чтобы браузер отображал видео, то больше минуты - полторы не показываю - обрывается.
В чем может быть причина?
Я уже и таймауты ставил на cURL (в коде закоментарил пока-что это) и LOW SPEED - ничего не помогает. Вот собственно функция скачки видео:

function get_video_data($url, $cookie = null)
{
$ch = curl_init($url);
if ($cookie != null)
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$res = curl_getinfo($ch);
curl_close($ch);
$size = $res['download_content_length'];
$length = $size; // Content length
$start = 0; // Start byte
$end = $size - 1; // End byte
header('Accept-Ranges: bytes');
header('Content-Type: '. $res['content_type']);
if (isset($_SERVER['HTTP_RANGE']))
{
$ranges = $_SERVER['HTTP_RANGE'];
list(, $range) = explode('=', $ranges, 2);
$range = explode('-', $range);
$c_start = $range[0];
$c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : ($size - 1);
$start = $c_start;
$end = $c_end;
$length = $end - $start + 1;
header('HTTP/1.1 206 Partial Content');
header("Content-Range: bytes $start-$end/$size");
}
header("Content-Length: ".$length);
//header('Content-Disposition: attachment; filename='. urlencode('video_file.mp4'));
header('Content-Disposition: inline');
header('Content-Transfer-Encoding: binary');
$ch = curl_init($res['url']);
if ($cookie != null)
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
if (isset($_SERVER['HTTP_RANGE']))
curl_setopt($ch, CURLOPT_RANGE, "$start-$end");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
/*
curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 1);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 600000);
*/

curl_exec($ch);
curl_close($ch);
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.