Django Web使用Jetson Tx2作为服务器显示来自摄像头的流

时间:2018-12-13 13:27:45

标签: python django opencv nvidia-jetson

我正在编写Web应用程序,我想在其中:

  1. 显示来自摄像头的本地流-这意味着我要从服务器流式传输视频(我不想打开客户端的摄像头)
  2. 阅读QR码并在文本框中列出

这两个已经实现,但是!我遇到了一些意外的行为。我描述的功能可以完美运行,但只能在localhost上运行。我想部署它,以便可以通过另一台计算机访问它(本来是要在机器人上使用的。)

因此,要描述我的体系结构:我将Jetson TX2用作服务器(此处连接了网络摄像头)。我正在使用Django Web框架,django-channels,daphne作为Web服务器以及ngingx作为代理。我正在主管中运行daphne和后台进程。

我正在使用worker(后台进程)从网络摄像头捕获帧并将其通过Redis发送到Web后端。

因此,当我在本地主机上运行它时,一切都会按预期进行。当我将Debug设置为FALSE并将Jetson的IP添加到ALLOWED_HOSTS并尝试从另一台计算机访问Web时,会发生这种情况: 我可以看到,由于摄像头指示灯亮起,因此可以访问该摄像头。我在网络摄像头前面放了一些QR代码,该代码出现在网络的文本框中!但是视频不存在(当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

由于我不知道问题出在哪里,因此我不会在此处发布整个代码。有谁知道问题可能在哪里?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

所以,我知道了。在我的html模板中,我只有一行,在那里我链接到流地址:

 <img src="http://127.0.0.1:8000/webcam-stream">

我认为,现在大家都知道问题出在哪里。我需要将IP更改为主机地址。