我有一些在网站上流传mjpeg视频的问题。相机有一个私有IP(必须保持私有/本地),但必须在公共网站上可见。
我尝试了以下代码:
这个目前可以运作。但现在的问题是,当我通过jQuery发送一些请求(相机转向),它们无法发送,直到我刷新网站或关闭它。只有在我直接在图像src标签中编写文件时,才能起到作用。但是,当然,流只能在本地Web服务器上显示。我的问题是:在公共网站上流视频的最佳方法是什么?
问候
BlackBonjour 编辑:
这里是jQuery代码:
这不是完整的代码,但这就是所有的转向功能。
更新17.09
我最近几天一直在解决我的问题,但仍然没有找到解决方案。我尝试打开一个新窗口来进行转向。问题是,如果我用JavaScript打开窗口,我仍然无法控制相机。当我打开不同的浏览器并直接访问“控制器”时,我可以控制相机。但这不是我想要的。如何使用JS(Ajax)控制相机?
接下来是,当我通过PHP读取流时,服务器和我的电脑变得非常缓慢。我该如何修复它?
我使用以下代码来读取流:
我尝试了以下代码:
HTML
<img src="video.php?ip=IPADDRESS&name=NAME" width="640" height="480" />
PHP (video.php)
<?php
// ... some code to get the camera object
header('Content-Type: multipart/x-mixed-replace; boundary=myboundary');
ob_end_flush();
readfile('http://'.$cam->user.':'.$cam->pwd.'@'.$cam->ip.'/mjpg/video.mjpg');
?>
这个目前可以运作。但现在的问题是,当我通过jQuery发送一些请求(相机转向),它们无法发送,直到我刷新网站或关闭它。只有在我直接在图像src标签中编写文件时,才能起到作用。但是,当然,流只能在本地Web服务器上显示。我的问题是:在公共网站上流视频的最佳方法是什么?
问候
BlackBonjour 编辑:
这里是jQuery代码:
$('#container').on('click', '.steer', function()
{
$.post('handle_post.php',
{
action: 'move-cam',
ip: $('#camIP').val(),
name: $('#camNAME').val(),
move: $(this).attr('alt')
});
});
这不是完整的代码,但这就是所有的转向功能。
更新17.09
我最近几天一直在解决我的问题,但仍然没有找到解决方案。我尝试打开一个新窗口来进行转向。问题是,如果我用JavaScript打开窗口,我仍然无法控制相机。当我打开不同的浏览器并直接访问“控制器”时,我可以控制相机。但这不是我想要的。如何使用JS(Ajax)控制相机?
接下来是,当我通过PHP读取流时,服务器和我的电脑变得非常缓慢。我该如何修复它?
我使用以下代码来读取流:
$fp = fsockopen($cam->ip, 80, $errno, $errstr, 30);
if(!$fp)
{
echo $errstr.' ('.$errno.')<br />'."\n";
}
else
{
$urlstring = "GET /mjpg/video.mjpg HTTP/1.0\r\nAuthorization: BASIC ".base64_encode($cam->user.':'.$cam->pwd)."\r\n\r\n";
fputs($fp, $urlstring);
while($str = trim(fgets($fp, 4096)))
{
header($str);
}
fpassthru($fp);
flush();
fclose($fp);
}