0

我正在尝试在 2 个不同的应用程序中使用我的 Jetson Nano(通过 SSH 无头运行)上的摄像头馈送。

从命令行,我可以运行

gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=2464, format=NV12, framerate=(fraction)21/1' ! nvvidconv ! xvimagesink

它通过 X11 窗口将视频从我的相机(连接到 Jetson Nano 的 IMX219)流式传输到我的桌面。

我想做的是以某种方式在 2 个不同的应用程序中使用相同的视频流。我的第一个应用程序是一个运行一些 OpenCV 东西的 python 程序,第二个应用程序是一个简单的 bash 脚本,它将视频记录到一个 *.mp4 文件中。

这样的事情可能吗?我已经研究过 using v4l2loopback,但我不确定这是否真的是最简单的方法。

4

1 回答 1

0

好吧,感谢两位评论员,我设法弄清楚了,这是我在 Jetson Nano 上的解决方案,但它可以针对任何 Gstreamer 应用程序进行调整。

首先,用于v4l2loopback创建 2 个虚拟设备,如下所示:

sudo modprobe v4l2loopback video_nr=1,2

这将创造/dev/video1/dev/video2

然后,您可以tee将 Gstreamer 流转储到每个虚拟设备中,这是我的行:

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

这专门用于我的 Jetson Nano 和我的特定相机,但您可以更改 gstreamer 管道以执行您想要的操作

于 2021-05-26T22:52:40.873 回答