2015-11-20 5 views
-3

Я разрабатываю потоковый веб-сайт в html5, используя тег html5, и мне интересно, какой сервер мне нужен для поддержки 100 одновременных и разных видеопотоков со скоростью 4 Мбит/с в секунду. Также, какой hdd или raid или whatelse мне нужно выполнить. Мне также нужно иметь в виду, что система должна быть масштабируемой. Я видел AWS, но это кажется дорогим ... Спасибо заранее.Требования к серверу потокового видео Html5

+0

Извините, но рекомендации аппаратные не по теме здесь. – JJJ

+0

'' Я видел AWS, но это кажется дорогим »- тогда попробуйте любого из своих конкурентов. Любое облачное решение, вероятно, будет на порядок дешевле, чем создание собственной инфраструктуры. – David

ответ

2

Тяжелый подъем в сценарии потоковой передачи видео, как правило, выполняется CDN, который сильно оптимизирован для этой роли. Вы хотите купить эту услугу, а не строить ее; Дэвид абсолютно прав, что строительство, оптимизация и поддержание вашей собственной инфраструктуры было бы чрезмерно дорогостоящим. CDNs вкладывают огромные ресурсы в технические решения для решения проблемы быстрого распространения большого объема данных в разрозненных местах. Итог: если вы отказываетесь от стоимости услуг Amazon, вы не можете позволить себе создавать свою собственную архитектуру края/происхождения.

В число известных CDN входят Akamai, Amazon Cloudfront, Level3, BitGravity, Edgecast и LimeLight. Попытайтесь связаться с их отделами продаж и посмотреть, готов ли кто-нибудь сделать вам много.

+0

Я не понимаю: если я считаю скорость потока 4 Мбит/с X 100 пользователей (одновременно), я достигаю 400 Мбит/с, которые составляют 50 Мб x секунду, а с пропускной способностью ssd hdd и 1 Гбит/с я должен достичь своей цели или есть какая-то другая проблема рассматривать ?? –

+0

Да. Например, что происходит, когда кто-то из другой стороны мира посещает? Является ли контент подан из того места, где он был первоначально сохранен. CDN имеет архитектуру edge/origin (вроде как, доставка/хранение), которая позволяет им доставлять файлы из другого места, кроме того, откуда она была первоначально сохранена. – Umopepisdn

+0

Также кеширование. Что происходит, когда два человека из одного и того же географического положения - скажем, Индия - дважды просматривают видео? Нужно ли отправлять биты через океан каждый раз, или может ли дорогостоящая длинная прогулка выполняться только один раз для первого человека, который просит, и пусть последующие зрители видят более локальную точку присутствия? – Umopepisdn

0

использовать этот код, чтобы играть и видео в ИОС

<? 
$file="abc.mp4"; 
@fread($file); 
$file = $play; 
$fp = @fopen($file, 'rb'); 



$size = filesize($file); // File size 
$length = $size;   // Content length 
$start = 0;    // Start byte 
$end = $size - 1;  // End byte 

header('Content-type: video/mp4'); 
header("Accept-Ranges: 0-$length"); 
if (isset($_SERVER['HTTP_RANGE'])) { 

    $c_start = $start; 
    $c_end = $end; 

    list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2); 
    if (strpos($range, ',') !== false) { 
     header('HTTP/1.1 416 Requested Range Not Satisfiable'); 
     header("Content-Range: bytes $start-$end/$size"); 
     exit; 
    } 
    if ($range == '-') { 
     $c_start = $size - substr($range, 1); 
    }else{ 
     $range = explode('-', $range); 
     $c_start = $range[0]; 
     $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size; 
    } 
    $c_end = ($c_end > $end) ? $end : $c_end; 
    if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) { 
     header('HTTP/1.1 416 Requested Range Not Satisfiable'); 
     header("Content-Range: bytes $start-$end/$size"); 
     exit; 
    } 
    $start = $c_start; 
    $end = $c_end; 
    $length = $end - $start + 1; 
    fseek($fp, $start); 
    header('HTTP/1.1 206 Partial Content'); 
} 
header("Content-Range: bytes $start-$end/$size"); 
header("Content-Length: ".$length); 


$buffer = 1024 * 8; 
while(!feof($fp) && ($p = ftell($fp)) <= $end) { 

    if ($p + $buffer > $end) { 
     $buffer = $end - $p + 1; 
    } 
    set_time_limit(0); 
    echo fread($fp, $buffer); 
    flush(); 
} 

fclose($fp); 
exit(); 


} 
?> 
Смежные вопросы