【问题标题】:Html5 video streaming server requirement [closed]Html5视频流服务器要求[关闭]
【发布时间】:2015-11-20 18:20:30
【问题描述】:

我正在使用 html5 视频标签在 html5 中开发一个流媒体网站,我想知道我需要什么样的服务器以每秒 4Mbsp 的速率支持 100 个同时和不同的视频流。 还有我需要什么样的硬盘或raid或whatelse来完成这个。 我还需要记住,系统需要可扩展。 我看到了 AWS,但它似乎很贵...... 谢谢提前。

【问题讨论】:

  • 抱歉,硬件推荐在这里是题外话。
  • "I saw AWS but it seem expensive" - 然后尝试他们的任何竞争对手。任何云解决方案都可能比构建自己的基础架构便宜几个数量级。

标签: html video server video-streaming


【解决方案1】:

视频流场景中的繁重工作通常由 CDN 完成,CDN 针对此角色进行了大量优化。您想购买此服务,而不是构建它; David 是绝对正确的,即构建、优化和维护自己的基础架构将非常昂贵。 CDN 将大量资源用于工程解决方案,以解决将大量数据快速交付到不同位置的问题。底线:如果您对 Am​​azon 的服务成本犹豫不决,您将无法设计自己的高性能边缘/源架构。

一些知名 CDN 包括 Akamai、Amazon Cloudfront、Level3、BitGravity、Edgecast 和 LimeLight。尝试联系他们的销售部门,看看是否有人愿意为您做一笔划算的交易。

【讨论】:

  • 我不明白:如果我考虑 4Mbps X 100 个用户(同时)的流传输速度,我会达到 400 Mbps,即 50 Mb x 秒,如果我能达到我的 ssd 硬盘和 1Gbps 带宽目标还是有其他问题需要考虑??
  • 是的。例如,当世界另一端的人来访时会发生什么?是从最初存储的位置提供的内容。 CDN 具有边缘/来源(类似于交付/存储)架构,允许他们从与原始存储位置不同的位置交付文件。
  • 还有缓存。当来自同一地理位置(例如印度)的两个人观看视频两次时会发生什么?是否每次都必须将钻头运送到海上,或者昂贵的长途运输是否只能为第一个请求的人执行一次,然后让后续观众从更本地的角度观看?
  • 关键在于,无论在全球何处提出请求,确保位(大部分情况下)在请求后的很短的时间内可用,涉及大量的工程设计来自。使事情神奇地“正常工作”所需的基础设施非常昂贵,而且难以构建和维护。除非您希望这成为您的业务,否则您最好还是从那些付出了此类事业所需的时间、金钱、工程和人脉网络的人那里购买这项服务。
【解决方案2】:

使用此代码在ios中播放和视频

<?
$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();


}
?>

【讨论】:

    猜你喜欢
    • 2020-05-15
    • 2011-05-23
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    相关资源
    最近更新 更多