Php 如何在同一页面上呈现6个或更多mjpeg流?

Php 如何在同一页面上呈现6个或更多mjpeg流?,php,http,mjpeg,Php,Http,Mjpeg,我有一个php页面,它充当一些IP摄像头的mjpeg流的代理 .... header('Content-Type: multipart/x-mixed-replace; boundary=myboundary'); readfile('http://<local_server_ip>:<port>/'.$camId."/mjpg"; ob_end_flush(); .... 。。。。 标题('Content-Type:multipart/x-mixed-replace;

我有一个php页面,它充当一些IP摄像头的mjpeg流的代理

....
header('Content-Type: multipart/x-mixed-replace; boundary=myboundary');
readfile('http://<local_server_ip>:<port>/'.$camId."/mjpg";
ob_end_flush();
....
。。。。
标题('Content-Type:multipart/x-mixed-replace;boundary=myboundary');
readfile('http://://'.$camId./mjpg';
ob_end_flush();
....
还有一个html/javascript页面,其中我在一个img标记中显示mjpeg,以及相机功能(向左、向右、向上、向下移动)

在同一页面上少于6个摄像头的情况下,一切都很好;一旦我添加了第6个摄像头,其他一切都停止工作:我可以看到6个摄像头流,但我无法再在页面上执行任何其他操作-按注销按钮或按摄像头移动按钮都不起任何作用,开发工具会将操作显示为挂起

我已经读到,到域()的最大持久http连接数是有限制的,而在Chrome(我正在使用的)中,限制是6

我不能从等式中删除php代理-这个页面也必须可以从外部访问,因此我不能将本地ip放在img标记中


有人知道这样做的方法吗?

为摄像头代理创建子域。这些子域都可以指向同一台服务器

基本上,这就是设置:

    NAME                TYPE   VALUE
--------------------------------------------------
camproxy.example.com.   A      127.0.0.1
cam1.example.com.       CNAME  camproxy.example.com.
cam2.example.com.       CNAME  camproxy.example.com.
cam3.example.com.       CNAME  camproxy.example.com.
cam4.example.com.       CNAME  camproxy.example.com.
...
然后,在您的控制页面中,要么只使用每个子域一次,要么记录您使用一个子域的次数。例如:

function getCamUrl($file) {
    static $subdomain = 1;
    static $uses = 0;

    $uses++;
    if($uses > 6) {
        $uses = 0;
        $subdomain++;
    }

    return "cam" . $subdomain . ".example.com/" . $file;
}

echo '<img src="'. getCamUrl('video1.mjpeg') .'">';
echo '<img src="'. getCamUrl('video2.mjpeg') .'">';
echo '<img src="'. getCamUrl('video3.mjpeg') .'">';
echo '<img src="'. getCamUrl('video4.mjpeg') .'">';
函数getCamUrl($file){ 静态$subdomain=1; 静态$uses=0; $uses++; 如果($uses>6){ $uses=0; $subdomain++; } 返回“cam.$subdomain..example.com/”$file; } 回声'; 回声'; 回声'; 回声';
根据规范,浏览器应该只使用2个连接。您可以将其设置为6,这在大多数现代浏览器中都可以使用。

谢谢您的回答。不幸的是,我不允许创建任何子域。我找到了一种不创建子域的方法。我在httpd.conf中添加了两个新的虚拟主机,它们具有相同的域,只是不同而已t端口,然后在我的显示页面中每3个图像标签使用一个不同的端口。