与 Gstreamer 同时在 2 个应用程序中使用视频设备
Using a video device in 2 applicatrions simoultaneously with Gstreamer
我正在尝试在 2 个不同的应用程序中使用我的 Jetson Nano(运行ning headless over SSH)上的摄像头。
从命令行,我能够运行
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=2464, format=NV12, framerate=(fraction)21/1' ! nvvidconv ! xvimagesink
它通过 X11 Window.
从我的相机(IMX219 连接到 Jetson Nano)将视频流式传输到我的桌面
我想做的是以某种方式在 2 个不同的应用程序中使用相同的视频流。
我的第一个应用程序是一个 python 程序,其中 运行 包含一些 OpenCV 内容,第二个应用程序是一个简单的 bash 脚本,可将视频录制到 *.mp4 文件中。
这可能吗?我研究过使用 v4l2loopback
,但我不确定这是否真的是最简单的方法。
好吧,感谢两位评论员,我设法弄明白了,这是我在 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 管道以执行您想要的操作
我正在尝试在 2 个不同的应用程序中使用我的 Jetson Nano(运行ning headless over SSH)上的摄像头。
从命令行,我能够运行
gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=2464, format=NV12, framerate=(fraction)21/1' ! nvvidconv ! xvimagesink
它通过 X11 Window.
从我的相机(IMX219 连接到 Jetson Nano)将视频流式传输到我的桌面我想做的是以某种方式在 2 个不同的应用程序中使用相同的视频流。 我的第一个应用程序是一个 python 程序,其中 运行 包含一些 OpenCV 内容,第二个应用程序是一个简单的 bash 脚本,可将视频录制到 *.mp4 文件中。
这可能吗?我研究过使用 v4l2loopback
,但我不确定这是否真的是最简单的方法。
好吧,感谢两位评论员,我设法弄明白了,这是我在 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 管道以执行您想要的操作