使用 Python3 gstreamer1.0 和 pylonsrc 使用 basler 相机和 pylon5 在处理循环中出现错误
Posted
技术标签:
【中文标题】使用 Python3 gstreamer1.0 和 pylonsrc 使用 basler 相机和 pylon5 在处理循环中出现错误【英文标题】:Using Python3 gstreamer1.0 with pylonsrc using basler camera and pylon5 gives error in the processing loop 【发布时间】:2019-12-20 01:01:42 【问题描述】:我在 python3 中使用gstreamer1.0
和pylonsrc
元素从basler
相机捕获视频片段。
例如使用这个管道:
[GST_DEBUG=pylonsrc:5 gst-launch-1.0 pylonsrc userid="testCam" imageformat=rgb8 lightsource="off" autoexposure="continuous" autowhitebalance="continuous" autogain="continuous" limitband flipx= “假”翻转=“假”!视频转换! xvimagesink]
有时会出现处理循环中的错误并停止录制。
我注意到的是,我运行了许多其他消耗资源的进程,例如,如果我打开 chromium,则会出现此错误。 另一个例子是,当我处理来自以太网和其他协议的大量数据时,一些线程开始处理这些数据,出现错误并且相机停止。
我尝试了不同的管道,当我使用大量系统资源时都会出现这个问题。
有关错误的详细信息:
[将管道设置为 PLAYING ... 0:00:00.586949696 22636 0x50fb70 DEBUG pylonsrc gstpylonsrc.c:921:gst_pylonsrc_set_caps:设置上限为视频/x-raw,格式=(字符串)RGB,宽度=(整数)1280,高度=(整数)720,帧率=(分数)0/1 新时钟:GstSystemClock 0:00:13.221158272 22636 0x50fb70 错误 pylonsrc gstpylonsrc.c:2100:gst_pylonsrc_create:图像处理循环出错。 错误:来自元素 /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0:内部数据流错误。
附加调试信息:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstPylonsrc:pylonsrc0: 流式传输任务暂停,原因错误 (-5) 执行在 0:00:12.634486400 之后结束 将管道设置为 PAUSED ... ]
【问题讨论】:
【参考方案1】:我认为问题是由 CPU 中断引起的。
整个相机应用程序在 Nvidia TX2 和 Ubuntu 16.04LTS 上运行。
Nvidia CAN 控制器在主 CPU 上创建中断,这会干扰在相同 CPU 内核上运行中断的相机应用程序。
我还看到 6 个内核中有 2 个内核(丹佛处理器)不工作。
我已激活所有内核并在这些新激活的内核上移动(关联)can0 和 can1 中断。
现在我不会丢失帧,因此处理循环中不再出现错误。
但我建议修改 gstpylonsrc.c 第 2099 行中的文件并设置 else 条件,如果没有抓取任何帧,则保留最后一帧。 这将避免停止管道。
详情: https://github.com/zingmars/gst-pylonsrc/issues/5
【讨论】:
以上是关于使用 Python3 gstreamer1.0 和 pylonsrc 使用 basler 相机和 pylon5 在处理循环中出现错误的主要内容,如果未能解决你的问题,请参考以下文章