uvc_get_stream_ctrl_format_size failed
-
@tom
No, I dont have a hires mipi sensor on my VOXL. I am using the TOF, Stereo, and Tracking sensors specifically for indoor flights.
I am just trying to record frames or video from a connected uvc camera while in flight.
I am also trying to set one of my stereo cameras as the QVIO instead of the tracking camera. Again this is just for indoor flights. I have also asked about this QVIO setup in this thread, but have not received a response other than pointing to the extrinsics ModalAi page. -
@tom
The command you sent me earlier this week did not work on the VOXL platform. I tried variations on both our e-CAM83 and Aruducam IMX335 uvc camera modules.Could you please point me to a uvc camera that will work with the
voxl-uvc-server
?
Our main goal is to connect a uvc camera to the Seeker and be able to capture frames or video (streaming is not necessary) and send them to an onboard SD card (possibly usingvoxl-logger
.Would this Blue Robotics uvc module work? Meaning, is it capable of connecting to the
voxl-uvc-server
and be able to send frames and/or video to the onboard SD card usingvoxl-logger
on the VOXL1 Seeker Dev Drone? -
@tom
I have also noticed that when I updated my platform to 0.9 the streamer.conf has changed.
Now our Arducam IMX335 is not even working (it had no problems streaming before).0.9 streamer.conf
{ "input-pipe": "hires", "bitrate": 1000000, "decimator": 2, "port": 8900, "rotation": 0 }
3.8.0-0.7 streamer.conf
{ "conf-version":"1.3", "configuration": "hires", "uvc-generic": { "input": { "interface": "mpa", "mpa-camera": "uvc" }, "output": { "stream": { "rotation": 0, "width": 640, "height": 480, "decimator": 1, "bitrate": 1000000 } } }, "uvc-flir-boson": { "input": { "interface": "mpa", "mpa-camera": "uvc" }, "output": { "stream": { "rotation": 0, "width": 640, "height": 512, "decimator": 2, "bitrate": 1000000 } } }, "uvc-flir-lepton": { "input": { "interface": "mpa", "mpa-camera": "uvc" }, "output": { "stream": { "rotation": 0, "width": 160, "height": 120, "bitrate": 500000 } } }, "hires": { "input": { "interface": "mpa", "mpa-camera": "hires" }, "output": { "stream": { "rotation": 0, "width": 640, "height": 480, "decimator": 2, "bitrate": 1000000 } } }, "hires-logo": { "input": { "interface": "mpa", "mpa-camera": "hires" }, "output": { "stream": { "rotation": 0, "width": 640, "height": 480, "decimator": 2, "bitrate": 1000000 } }, "overlay": { "location": "/etc/modalai/modalai.png", "offset_x": -1, "offset_y": -1 } }, "stereo": { "input": { "interface": "mpa", "mpa-camera": "stereo" }, "output": { "stream": { "width": 640, "height": 960, "decimator": 2, "bitrate": 1000000 } } }, "tracking": { "input": { "interface": "mpa", "mpa-camera": "tracking" }, "output": { "stream": { "width": 640, "height": 480, "decimator": 2, "bitrate": 1000000 } } }, "dfs-disparity": { "input": { "interface": "mpa", "mpa-camera": "dfs_disparity" }, "output": { "stream": { "width": 640, "height": 480, "decimator": 2, "bitrate": 1000000 } } }, "qvio-overlay": { "input": { "interface": "mpa", "mpa-camera": "qvio_overlay" }, "output": { "stream": { "width": 640, "height": 544, "decimator": 2, "bitrate": 1000000 } } }, "tflite-overlay": { "input": { "interface": "mpa", "mpa-camera": "tflite" }, "output": { "stream": { "width": 640, "height": 480, "decimator": 2, "bitrate": 1000000 } } }, "hdmi-mpa": { "input": { "interface": "mpa", "mpa-camera": "v4l2" }, "output": { "stream": { "width": 640, "height": 360, "decimator": 2, "bitrate": 1000000 } } }, "gphoto2-mpa": { "input": { "interface": "mpa", "mpa-camera": "gphoto2" }, "output": { "stream": { "width": 640, "height": 360, "decimator": 2, "bitrate": 1000000 } } }, "video-test": { "input": { "interface": "test", "frame": { "width": 640, "height": 480, "format": "yuv420" } }, "output": { "stream": { "rotation": 0, "width": 640, "height": 480, "rate": 30, "bitrate": 1000000 } } }, "uvc-video": { "input": { "interface": "uvc", "device": "/dev/video0" }, "output": { "stream": { "rotation": 0, "width": 640, "height": 360, "rate": 15, "bitrate": 1000000 } } } }
-
@tom
Do you happen to know some Gstreamer commands for the Logitech C270 uvc camera?
I am trying to get either a streaming or recording command to work on the Seeker, with no luck so far. -
@Kris I don't have that specific webcam or a VOXL1 but with a different one and a VOXL2, all I have to do is run
voxl-uvc-server
, see output below:voxl2:/$ voxl-uvc-server loading config file Creating new config file: /etc/modalai/voxl-uvc-server.conf ================================================================= width: 640 height: 480 fps: 30 pipe_name: uvc =================================================================
I'm able to pull up the stream using voxl-portal (going to IP of my VOXL2 in browser)
Then alternatively I'm able to use this gstreamer command:
gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw,format=YUY2 ! videoconvert ! x264enc speed-preset=ultrafast tune=zerolatency ! rtph264pay name=pay0 ! udpsink host=192.168.1.124 port=8554
to pull up the video stream in QGC
-
-
@tom
Thank you for your examples.I was asking about the C270 camera because @Eric-Katzfey had mentioned that he starts his camera testings with this model in order to locate where issues are coming from on other camera models.
I do appreciate your support.
I will continue to try different Gstreamer commands. -
@Kris I understand, your solution will likely be similar to what I posted above
-
@tom
I was able to stream the video from voxl-portal,voxl:~$ voxl-uvc-server -d Enabling debug messages voxl-uvc-server starting Image resolution 640x480, 30 fps chosen UVC initialized Device found Device opened uvc_get_stream_ctrl_format_size succeeded for format YUYV Streaming starting Got frame callback! frame_format = 3, width = 640, height = 480, length = 614400, ptr = (nil) * got image 30 * got image 60 * got image 90 * got image 120 * got image 150
but I cannot get the Gstreamer to work for QGC.
Here is my ERROR;
voxl:~$ gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw,format=YUY2 ! videoconvert ! omxh264enc ! rtph264pay name=pay0 ! udpsink host=192.168.110.152 port=8554 Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock ** ERROR:/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-omx/1.10.4-r0/gst-omx-1.10.4/omx/gstomxh264enc.c:532:gst_omx_h264_enc_get_caps: code should not be reached Aborted
Maybe its a CAPS issue?
I had to change x264 to omxh264, and had to completely remove
speed-preset=ultrafast tune=zerolatency
from the command because it wasnt playing well with VOXL1. -
@Kris Well now that you have
voxl-uvc-server
working you should be able to use voxl-streamer on top of that to get a stream going -
@tom
Yes, I am able to get the stream working with thevoxl-streamer -i uvc
command,
but I am trying to get a Gstreamer command working so that I can build a pipeline to record the frames.voxl:~$ voxl-streamer -i uvc ERROR: object missing input-pipe WARNING: Failed to get default pipe name from configuration file ERROR: object missing bitrate WARNING: Failed to get default bitrate from configuration file Camera server Connected Stream available at rtsp://127.0.0.1:8900/live
Gstreamer;
voxl:~$ show-video-device-info.sh /dev/video2: UVC Camera (046d:0825) 046d:0825 voxl:~$ sudo gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,format=YUY2 ! videoconvert ! omxh264enc ! rtph264pay name=pay0 ! udpsink host=192.168.110.152 port=8554 Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock ** ERROR:/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-omx/1.10.4-r0/gst-omx-1.10.4/omx/gstomxh264enc.c:532:gst_omx_h264_enc_get_caps: code should not be reached
or without width & height;
voxl:~$ show-video-device-info.sh /dev/video2: UVC Camera (046d:0825) 046d:0825 voxl:~$ sudo gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw,format=YUY2 ! videoconvert ! omxh264enc ! rtph264pay name=pay0 ! udpsink host=192.168.110.152 port=8554 Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Setting pipeline to PLAYING ... New clock: GstSystemClock ** ERROR:/opt/workspace/build/apq8096-le-1-0-1_ap_standard_oem.git/apps_proc/poky/build/tmp-glibc/work/armv7a-vfp-neon-oemllib32-linux-gnueabi/lib32-gstreamer1.0-omx/1.10.4-r0/gst-omx-1.10.4/omx/gstomxh264enc.c:532:gst_omx_h264_enc_get_caps: code should not be reached
-
@Kris The intention with the Logitech camera was to use it with voxl-uvc-streamer as Tom pointed out. That way you have a complete working setup and then you can start changing one thing at a time to get to what you want. If you want to switch to a different camera then you can see the differences in the new camera from the Logitech camera and try to debug that way. If you want to add a record feature with GStreamer then you can fork our voxl-streamer code and add the functionality into that. If you want to do it with a gst-launch-1.0 command line pipeline then you are farther away from anything we currently support and it's going to be hard for us to offer much help. I do think that what you are trying to do should be possible.