gpt4 book ai didi

php - 在 Linux/Apache 上通过 PHP 脚本访问 USB 网络摄像头

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:26 25 4
gpt4 key购买 nike

我想使用 USB 网络摄像头(在小型 C++/OpenCV 应用程序中)并从 PHP 脚本调用它。我的测试应用程序如下所示:

int main( int argc, char **argv )
{
cv::VideoCapture C( 0 );

cout << "C.isOpened() = " << boolalpha << C.isOpened() << endl;

return 0;
}

PHP 脚本如下所示:

<?php
exec( escapeshellcmd( '/thepath/theapp' ), $output, $result );

var_dump( $output );
?>

当我直接从命令行调用此应用程序时,它返回 true

当我像这样通过 php 调用应用程序时 php -f/the_php_script.php 它返回 true

当我通过 AJAX 从 html 文件(带有按钮)调用的 php 调用应用程序时,它通过 Apache 然后返回 false

所以,我的应用运行良好。我的 php 脚本也能正常工作。但是有一个权限或类似的东西可以阻止 php 通过 Apache 访问网络摄像头(用 OpenCV 库初始化它),但是权限足以让应用程序运行

有人可以帮助我吗?有什么想法吗?

谢谢!


编辑 1:

根据建议,我尝试使用 php 脚本在不使用 AJAX 的情况下启动我的应用程序。我得到了相同的结果,即 OpenCV 无法初始化服务器上​​的 USB 网络摄像头。

最佳答案

对于那些可能对这个问题感兴趣的人......

我面临的问题是双重的:通过从客户端调用的 php 脚本初始化 USB 网络摄像头,并启动一个应用程序从这个 php 脚本 可以将图像写入磁盘文件夹 /var/www/images.

  1. 要启用 USB 摄像头,我只需将用户 www-data (Apache) 添加到组 video。我是通过查看自己的帐户找到的:我看到我是该组的成员,因此将 Apache 添加到该组似乎很自然!
  2. 允许应用程序(从相机捕获图像)将它们存储在文件夹 /var/www/images 我观察到子文件夹 images 属于用户root 并且是 root 组的成员。由于运行调用我的应用程序的 php 脚本的是 Apache,我将 images 的所有者切换为 www-data

正如我们在法语中所说...Voilà!

感谢所有给我一些提示的人!

关于php - 在 Linux/Apache 上通过 PHP 脚本访问 USB 网络摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20234449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com