我正在编写网络应用程序,我想:
- 显示来自网络摄像头的本地流 - 这意味着我想从服务器流式传输视频(我不想打开客户端的网络摄像头)
- 读取二维码并在文本框中列出
这两个已经实现了但是!我遇到了一些意想不到的行为。我所描述的功能运行良好,但仅在本地主机上。我想部署它,因此可以通过不同的计算机访问它(它旨在用于机器人)。
所以来描述我的架构:我使用 Jetson TX2 作为服务器(此处连接网络摄像头)。我使用 Django web 框架、django-channels、daphne 作为 web 服务器和 ngingx 作为代理。我在主管中运行 daphne 和后台进程。
我正在使用工作者(后台进程)从网络摄像头捕获帧并通过 redis 将其发送到网络后端。
因此,当我在 localhost 上运行它时,一切都按预期工作。当我将 Debug 设置为 FALSE 并将 Jetson 的 IP 添加到 ALLOWED_HOSTS 并尝试从不同的计算机访问网络时,会发生这种情况:我可以看到,由于网络摄像头灯亮起,可以访问该网络摄像头。我在网络摄像头前放了一些二维码,代码出现在网络上的文本框中!但是视频不存在(当 ALLOWED_HOSTS 包含本地主机视频时)。收集相机帧的后台进程的输出给出以下错误:
libv4l2: error setting pixformat: Device or resource busy
OpenCV Error: Unspecified error (GStreamer: unable to start pipeline)
in cvCaptureFromCAM_GStreamer, file /home/nvidia/prototype/opencv/opencv-3.4.0/modules/videoio/$
VIDEOIO(cvCreateCapture_GStreamer (CV_CAP_GSTREAMER_FILE, filename)):raised OpenCV exception:
/home/nvidia/toyota_prototype/opencv/opencv-3.4.0/modules/videoio /src/cap_gstreamer.cpp:890: error: (-2)$
in function cvCaptureFromCAM_GStreamer
我不会在这里发布整个代码,因为我不知道问题到底出在哪里。有谁知道问题出在哪里?
谢谢您的帮助!