Php 伪流

Php 伪流,php,pseudo-streaming,Php,Pseudo Streaming,我目前测试脚本的伪流读取mp4文件,当我阅读一切工作正常,但我不能移动时间线?有问题吗? 我的编码(mp4元数据)是正确的,因为在播放器中没有此代码的情况下读取时,我可以在时间轴中移动。我使用fplayer读取mp4 // ----- NO CACHE ----- session_cache_limiter('nocache'); // General header for no caching $now = gmdate('D, d M Y H:i:s') . ' GMT'; hea

我目前测试脚本的伪流读取mp4文件,当我阅读一切工作正常,但我不能移动时间线?有问题吗? 我的编码(mp4元数据)是正确的,因为在播放器中没有此代码的情况下读取时,我可以在时间轴中移动。我使用fplayer读取mp4

    // ----- NO CACHE -----
session_cache_limiter('nocache');

// General header for no caching
$now = gmdate('D, d M Y H:i:s') . ' GMT';
header('Expires: ' . $now); // rfc2616 - Section 14.21
header('Last-Modified: ' . $now);
header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header('Pragma: no-cache'); // HTTP/1.0

// ----- Seek position -----
$seekat = 0;
if (isset($_GET["pos"])) {
    $position = $_GET["pos"];
    if (is_numeric ($position)) {
        $seekat = $position;
    }
    if ($seekat < 0) $seekat = 0;
}

$filename = 'test.mp4'; 
$ext = strrchr($filename, ".");
$prefix = "";
$file = $prefix . $filename;
if (($filename != "") && (file_exists($file)) && ($ext==".mp4")) {
    header("Content-Type: video/x-mp4");
    if ($seekat > 0) header('Content-Length: ' . (filesize($file)-$seekat));
    else header('Content-Length: ' . filesize($file));

    if ($seekat != 0) {
        print("FLV");
        print(pack('C', 1 ));
        print(pack('C', 1 ));
        print(pack('N', 9 ));
        print(pack('N', 9 ));
    }
    $fh = fopen($file, "rb");
    fseek($fh, $seekat);
    while (!feof($fh)) {
        print (fread($fh, 16384));
        // print (fread($fh, filesize($file)));
    }
    fclose($fh);
}
/----无缓存-----
会话缓存限制器(“nocache”);
//无缓存的常规标头
$now=gmdate('D,dm Y H:i:s')。'格林尼治标准时间';
标题('Expires:'.$now);//rfc2616-第14.21节
标题('Last-Modified:'.$now);
标头('Cache-Control:no store,no Cache,必须重新验证,预检查=0,后检查=0,max age=0');//HTTP/1.1
标头('Pragma:no cache');//HTTP/1.0
//----寻找位置-----
$seekat=0;
如果(isset($_GET[“pos”])){
$position=$_GET[“pos”];
如果(是数字($position)){
$seekat=$position;
}
如果($seekat<0)$seekat=0;
}
$filename='test.mp4';
$ext=strrchr($filename,“.”);
$prefix=“”;
$file=$prefix$文件名;
如果($filename!=“”)和($file))&&($ext==“.mp4”)){
标题(“内容类型:视频/x-mp4”);
if($seekat>0)头('Content-Length:'。(filesize($file)-$seekat));
else头('Content-Length:'.filesize($file));
如果($seekat!=0){
印刷品(“FLV”);
印刷品(包装('C',1));
印刷品(包装('C',1));
印刷品(包装('N',9));
印刷品(包装('N',9));
}
$fh=fopen($file,“rb”);
fseek($fh,$seekat);
而(!feof($fh)){
印刷品(fread($fh,16384));
//打印(fread($fh,filesize($file));
}
fclose($fh);
}
你能帮我吗?谢谢

header("Content-Type: video/x-mp4");
我目前使用相同的代码,但即使在流式传输mp4时,我也让标题内容与flv相同

Content-Type: video/x-flv
希望这会有帮助