首页 > 解决方案 > 如何在 Windows 上使用 Gstreamer 获取来自 UVC 的编码流

问题描述

我想使用 Gstreamer 在 Windows 上获取来自罗技高清网络摄像头 (UVC) 的编码流。我知道在 Linux 上您可以通过 /dev/video1 等访问。但是,我不知道如何在 Windows 上执行此操作。

我可以通过 Windows 上的 ksvideosrc 获取原始缓冲区,但这并不能解决我的问题。我必须得到硬件编码流。如果您知道任何其他库而不是 Gstreamer,请指导我。

我希望这样的输出,但对于 Windows 版本。
gst-launch-1.0 v4l2src device=/dev/video0 !解码器!ximagesink

标签: windowscameravideo-streaminggstreameruvc

解决方案


我为遇到此问题的人找到了解决方案。

gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720 ! decodebin ! ximagesink


这将附加相机的编码流,并使用 decodebin 解码并将输出提供给 Window。如果您不写入 image/jpeg 等,它将自动附加到相机的原始缓冲区。

在 C++ 代码中,就像

GstElement* v4l2src = gst_element_factory_make("v4l2src","Source");
GstElement* srcFilter = gst_element_factory_make("capsfilter","Filter");

然后您将它们添加到管道中并链接它们。那会做的。
注意:如果相机不支持该分辨率和媒体类型,它将给出

streaming stopped, reason not-negotiated (-4)

错误。


推荐阅读