【发布时间】:2020-10-18 16:09:14
【问题描述】:
运行从v4l2src 元素馈送的 GStreamer 管道可能会隐式更改相机格式。
这是一个示例(另请注意,/dev/video0 无处不在)。
我的一个相机支持这些格式
$ v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 1280x800
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 1280x1024
Interval: Discrete 0.133s (7.500 fps)
目前的格式是
$ v4l2-ctl --get-fmt-video
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 1280
Size Image : 614400
Colorspace : Default
Transfer Function : Default (maps to Rec. 709)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
Flags :
如果我只是运行这个管道
$ gst-launch-1.0 -e v4l2src ! videoconvert ! autovideosink
这会将当前格式(在管道运行之前,但它也将保持该状态)更改为
$ v4l2-ctl --get-fmt-video
Format Video Capture:
Width/Height : 1280/1024
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 2560
Size Image : 2621440
Colorspace : Default
Transfer Function : Default (maps to Rec. 709)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
Flags :
这不是我想要的。我想要的是让 GStreamer 使用已经设置的格式而不是更改它。我如何以编程方式实现这一点(gst-launch-1.0 只是一个例子,我主要对在代码中执行此操作感兴趣)?
【问题讨论】:
标签: gstreamer v4l2 gstreamer-1.0