Hello!
I am trying to capture video from a USB webcam, using the EVM. I have tried umpteen different GStreamer pipelines, but they all fail with the same error message -- for example:
gst-launch -v v4l2src device=/dev/video8 ! 'video/x-raw-yuv,width=640,height=480,framerate=15/1' ! fakesink
Setting pipeline to PAUSED ...
Mode set is 0
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not negotiate format
Additional debug info:
../../../../src/libs/gst/base/gstbasesrc.c(2830): gst_base_src_start (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Check your filtered caps, if any
Setting pipeline to NULL ...
Freeing pipeline ...
This pipeline fails on the EVM, but succeeds on my desktop (provided I drop the "device=" bits):
get-launch v4l2src device=/dev/video8 ! 'video/x-raw-yuv,width=640,height=480,framerate=15/1' ! ffmpegcolorspace ! v4l2sink device=/dev/video1
For reference, the input source does claim to support YUYV, 640x480@15:
v4l2-ctl --list-formats-ext --device /dev/video8
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 960x720
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 960x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.200s (5.000 fps)
The output with "--gst-debug=3" is very long, but here's a snippet around the error:
0:00:01.117273777 317 0x1f800 INFO GST_STATES ../../src/gst/gstbin.c:2526:gst_bin_change_state_func:<pipeline0> child 'capsfilter0' changed state to 3(PAUSED) successfully
0:00:01.117504555 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1109:gst_v4l2_object_fill_format_list:<v4l2src0>
got 2 format(s):
0:00:01.117585963 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1115:gst_v4l2_object_fill_format_list:<v4l2src0>
YUYV
0:00:01.453566037 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1115:gst_v4l2_object_fill_format_list:<v4l2src0>
MJPG
0:00:01.576118000 317 0x1f800 INFO v4l2src ../../../src/sys/v4l2/gstv4l2src.c:629:gst_v4l2src_get_caps:<v4l2src0> probed caps: 0x
14e5c0
0:00:01.576688852 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1109:gst_v4l2_object_fill_format_list:<v4l2sink0
> got 3 format(s):
0:00:01.576771926 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1115:gst_v4l2_object_fill_format_list:<v4l2sink0
> NV12
0:00:01.576852185 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1115:gst_v4l2_object_fill_format_list:<v4l2sink0
> YUYV
0:00:01.576927370 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1115:gst_v4l2_object_fill_format_list:<v4l2sink0
> NV16
0:00:01.577308111 317 0x1f800 INFO v4l2sink ../../../src/sys/v4l2/gstv4l2sink.c:738:gst_v4l2sink_get_caps:<v4l2sink0> probed caps:
0x14e7a0
Mode set is 0
0:00:01.616158555 317 0x1f800 INFO v4l2 ../../../src/sys/v4l2/gstv4l2object.c:1601:gst_v4l2_object_get_caps_info:<v4l2src0> rowstride: 1280
0:00:01.616294037 317 0x1f800 WARN basesrc ../../../../src/libs/gst/base/gstbasesrc.c:2830:gst_base_src_start:<v4l2src0> error: Could not negotiate format
0:00:01.616389703 317 0x1f800 WARN basesrc ../../../../src/libs/gst/base/gstbasesrc.c:2830:gst_base_src_start:<v4l2src0> error: Check your filtered caps, if any
0:00:01.616604814 317 0x1f800 INFO GST_ERROR_SYSTEM ../../src/gst/gstelement.c:1964:gst_element_message_full:<v4l2src0> posting message: Could not negotiate format
Any ideas on what I am doing wrong, here?
Thanks,
mark