RK3588摄像头v4l2取流测试失败

固件类型:官方提供的固件
固件文件名称:ROC-RK3588S-PC_Buildroot_v1.0.2a_221103
固件下载地址:rk3588_repo_sdk_v1.0.2a.7z
Log日志:屏幕截图.rar

通过v4l2-ctl对摄像头进行取流测试,但输出文件大小为0,没有保存任何数据。
使用SDK版本为:rk3588_repo_sdk_v1.0.2a.7z, Bundle:rk3588-v1.0.2a-to-v1.0.2b.7z; rk3588-v1.0.2b-to-v1.0.2c.7z
编译为BuildRoot系统和Debian系统测试结果相同。

测试命令如下:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480,pixelformat=NV12 --stream-mmap=3 --stream-to=/tmp/out2.yuv --stream-count=20 --stream-poll --verbose
输出结果:
VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture Multiplanar:
Width/Height : 640/480
Pixel Format : ‘NV12’ (Y/CbCr 4:2:0)
Field : None
Number of planes : 1
Flags :
Colorspace : Default
Transfer Function : Default
YCbCr/HSV Encoding: Default
Quantization : Default
Plane 0 :
Bytes per Line : 640
Size Image : 460800
VIDIOC_REQBUFS returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_STREAMON returned 0 (Success)
cap dqbuf: 0 seq: 0 bytesused: 460800 ts: 3662.352325 delta: 3662352.325 ms (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 1 bytesused: 460800 ts: 3662.385671 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 2 bytesused: 460800 ts: 3662.418945 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 3 bytesused: 460800 ts: 3662.452362 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 4 bytesused: 460800 ts: 3662.485613 fps: 30.01 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 5 bytesused: 460800 ts: 3662.518964 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 6 bytesused: 460800 ts: 3662.552390 fps: 29.99 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 7 bytesused: 460800 ts: 3662.585610 fps: 30.01 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 8 bytesused: 460800 ts: 3662.618955 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 9 bytesused: 460800 ts: 3662.652361 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 10 bytesused: 460800 ts: 3662.685610 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 11 bytesused: 460800 ts: 3662.719061 fps: 29.99 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 12 bytesused: 460800 ts: 3662.752365 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 13 bytesused: 460800 ts: 3662.785607 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 14 bytesused: 460800 ts: 3662.818992 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 15 bytesused: 460800 ts: 3662.852359 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 16 bytesused: 460800 ts: 3662.885608 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 17 bytesused: 460800 ts: 3662.918945 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 18 bytesused: 460800 ts: 3662.952395 fps: 30.00 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 19 bytesused: 460800 ts: 3662.985658 fps: 30.00 (ts-monotonic, ts-src-eof)

tchip_askquestions
屏幕截图.rar (221 KB)

v4l2-utils 好像需要 1.16.5 之前的版本才能取得到流,你可以用 gstreamer 取一下流看看可不可以

板蓝根 发表于 2022-11-25 10:53
v4l2-utils 好像需要 1.16.5 之前的版本才能取得到流,你可以用 gstreamer 取一下流看看可不可以

我试了gstreamer,命令如下:
firefly@firefly:~$ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=NV12,width=800,height=600,framerate=30/1 ! kmssink

输出结果如下:
Setting pipeline to PAUSED …
Using mplane plugin for capture
Pipeline is live and does not need PREROLL …
Pipeline is PREROLLED …
Setting pipeline to PLAYING …
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: GStreamer encountered a general resource error.
Additional debug info:
../sys/kms/gstkmssink.c(1967): gst_kms_sink_show_frame (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
drmModeSetPlane failed: Invalid argument (22)
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Execution ended after 0:00:01.193099748
Additional debug info:
../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason error (-5)
Setting pipeline to NULL …
Freeing pipeline …

好像还是不行。
另外,我在Debian的固件中使用V4L2 TestBench工具,能够看到摄像头图像,也能够把图像保存到文件中。
那很奇怪,使用v4l2-ctl为什么不行?而且我自己写了一个通过v4l2的取流的程序,读取的buffer为空。

kmssink 指定plane-id 或者用 waylandsink

请问楼主问题解决了吗

请问楼主问题是怎么解决的?