Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP伪流_Php_Video_Streaming_Freeze - Fatal编程技术网

PHP伪流

PHP伪流,php,video,streaming,freeze,Php,Video,Streaming,Freeze,我对PHP伪流有两个问题 有时会有点口吃 不使用mp4文件 $php\u buffer=2; $bitr_min=60; $intv_max=0.6; $bitr_max=300; $intv_min=0.3; $bitr=$bitr+$php\u缓冲区; 如果($bitr=$bitr_max){ $packet\u interval=$intv\u min; } 否则{ $packet_interval=$intv_max-($intv_max-$intv_min)*($bitr-$bitr

我对PHP伪流有两个问题

  • 有时会有点口吃
  • 不使用mp4文件
  • $php\u buffer=2;
    $bitr_min=60;
    $intv_max=0.6;
    $bitr_max=300;
    $intv_min=0.3;
    $bitr=$bitr+$php\u缓冲区;
    如果($bitr=$bitr_max){
    $packet\u interval=$intv\u min;
    }
    否则{
    $packet_interval=$intv_max-($intv_max-$intv_min)*($bitr-$bitr_min)/($bitr_max-$bitr_min));
    $packet\u interval=round($packet\u interval*100)/100;
    }
    $packet\u size=round($bitr*$packet\u interval*1024);
    $limit_带宽=$bitr;
    $fsize=文件大小($flv)-($fseek>0)$fseek+1:0);
    设置时间限制(30+$fsize/($limit\u带宽*1024));
    如果($no_缓存){
    #禁止缓存(不同客户端的不同方法)
    会话缓存限制器(“nocache”);
    标题(“到期日期:1981年11月19日星期四08:52:00 GMT”);
    标题(“上次修改:”.gmdate(“D,D M Y H:i:s”)“GMT”);
    标头(“缓存控制:无存储,无缓存,必须重新验证,后检查=0,预检查=0”);
    标题(“杂注:无缓存”);
    }
    //Flash视频头
    if(strpos($fname,.flv'))
    标题(“内容类型:视频/x-flv”);
    其他的
    标题(“内容类型:视频/mp4”);//视频/x-mp4
    标题(“内容处置:附件;文件名=\”.$fname.\”;
    标题(“内容长度:.$fsize”);
    $fpr=fopen($flv,'rb');
    //Flash视频文件格式头
    如果($fseek!=0){
    回音“FLV”。pack('C',1)。pack('C',1)。pack('N',9)。pack('N',9);
    }
    //查找所请求的文件开始
    fseek($fpr,$fseek);
    //启动文件输出
    而(!feof($fpr)){
    //带宽限制
    如果($packet\u interval>0&&$limit\u带宽){
    //开始时间
    列表($us,$s)=爆炸('',微时间());
    $ts=((浮动)$us+(浮动)$s);
    //回音包
    echo-fread($fpr,$packet_size);
    //结束时间
    列表($us,$s)=爆炸('',微时间());
    $tst=((浮动)$us+(浮动)$s);
    $tdi=$tst-$ts;
    //等待,当输出慢于数据包间隔时
    如果($tdi<(浮动)$数据包间隔){
    usleep((浮动)$packet_interval*1000000-(浮动)$tdi*1000000);
    }
    }
    否则{
    //无带宽限制的输出文件
    echo-fread($fpr,文件大小($flv));
    }
    
    }
    在任何浏览器(包括iPad/平板电脑)上伪流传输任何MP4文件,所有功能均正常工作(向前搜索、向后搜索并显示正确的时间)

    尝试使用tuxxin的MP4Streaming

    同样适用于长尾JWPlayer 6和HTML5播放器