GStreamer v4l2src在Jetson Nano上运行时无法分配缓冲区 [英] Gstreamer v4l2src failed to allocate buffer when run on a Jetson Nano

查看:0
本文介绍了GStreamer v4l2src在Jetson Nano上运行时无法分配缓冲区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试运行复制视频流的GStreamer管道,以便可以在两个应用程序中使用它。以下是我的示例流水线,它在Jetson Nano上运行失败,但在我的Ubuntu PC上运行。

我已经使用v4l2loopback创建了两个V4L2设备(/dev/avio1和/dev/Video2),如下所示:

sudo modprobe v4l2loopback video_nr=1,2

制片人:

gst-launch-1.0 videotestsrc ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2

消费者:

gst-launch-1.0 v4l2src device=/dev/video2 ! xvimagesink

如您所见,我正在尝试使用tee复制流并将其发送到我使用v4l2loopback创建的2个v4l2设备。

当我运行使用者时,它显示第一帧,然后崩溃:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Failed to allocate a buffer
Additional debug info:
gstv4l2src.c(998): gst_v4l2src_create (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0
Execution ended after 0:00:00.056466348
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

您知道为什么它无法分配缓冲区吗?为什么在我的Ubuntu电脑上不会发生这种情况?

以下是我的完整Jetson Nano管道,它使用摄像头并将流分割为2个V4L2接收器:

gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=NV12, framerate=(fraction)30/1' ! nvvidconv ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2

推荐答案

使用v4l2loopback中的max_buffers=2参数可以消除错误。我不能解释为什么我的Ubuntu电脑上不需要这个选项,一定是与可用内存大小有关?

奇怪的是,将max_buffers增加到更高的值(例如max_buffers=8)会导致相同无法分配缓冲区错误。

这篇关于GStreamer v4l2src在Jetson Nano上运行时无法分配缓冲区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆