无法正确流式传输视频文件

时间:2018-12-21 14:13:47

标签: php video

我想流式传输任何长度的视频文件。但是我为此而努力创建自己的php脚本。

我创建了一个,但是当我搜索视频时,它就中断了,视频从头开始播放。有时我遇到net :: ERR_CONTENT_LENGTH_MISMATCH错误。而且无法弄清楚如何完成工作。有我的代码。

<?php
$filename = "song.mp4";

$file = fopen($filename, 'rb');
$filesize = filesize($filename);

$buffer = 5 * 1024;

header("Content-Type: video/mp4");
header("Cache-Control: no-cache");
header("Accept-Ranges: bytes");

if(isset($_SERVER['HTTP_RANGE'])){
    $matches = array();

    preg_match("/(\d+)/i", $_SERVER['HTTP_RANGE'], $matches);

    $start = (int)$matches[1];

    if(isset($matches[2])){
        $end = $matches[2];
    }else{
        $end = $filesize - 1;
    }

    $length = $filesize - $start + 1;

    fseek($file, $start);
    header("Content-Length: " . $length);
    header("Content-Range: bytes $start-$end/$filesize");
}else{
    header("Content-Length: " . $filesize);
}

while(!feof($file)){
    $data = fread($file, $buffer);

    echo $data;
    flush();
}

fclose($file);
fclose($log);
exit;
?>

我希望在搜索过程中能够毫无问题地流式传输完整视频。

0 个答案:

没有答案