使用 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.0pylonsrc 元素从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 在处理循环中出现错误的主要内容,如果未能解决你的问题,请参考以下文章

raspberrypi gstreamer1.0 alsasrc0:内部数据流错误

音视频系列8:gstreamer基础

Gstreamer 1.0 - 创建自定义消息/事件/信号

linux打开编辑ppt pptx doc文件

bitbake 如何在构建过程中搜索配方?

GStreamer 1.0 在 C 中将原始编码为 H.264