I’m trying to build a gstreamer pipeline using the cameras on the special interface that the Jetson AGX Xavier comes with. For a start, I’m trying to just capture video data to a file so that I can confirm that it is getting data from the cameras, but that is failing because I can’t get it to move the data out of the NVMM memory.
Allegedly, the nvvidconv
tool should be able to take video data in the NVMM memory and move it out to normal memory (which I need for the later steps in my pipeline). According to this post, nvvidconv
should be able to perform this conversion. However, whenever I try this, I get the error message:
ERROR. nvvidconv gstnvvconv.c:2171:gst_nvvconv_fixate_caps:<nvvconv0> Failed to fixate output format
I’ve tried a bunch of different formats that this guide says it should support, and none of them are able to make it work. If I keep the output of the nvvidconv
step in the NVMM memory, then the nvvidconv
step is able to set itself up perfectly fine, but the next steps can no longer handle their incoming data (because they don’t know how to handle NVMM memory). Thus, I’m convinced that it is the moving of the data out of the NVMM memory which is causing the nvvidconv
step to act up, not the specific formats I’m requesting (I’ve tried several formats as both input and output, and none of them have worked for me). I also can’t just stay out of NVMM memory the entire time, since nvarguscamerasrc
can only output its data to NVMM memory.
For reference, the command which I am trying to run is:
gst-launch-1.0 -v nvarguscamerasrc sensor-id=1 ! 'video/x-raw(memory:NVMM), width=(int)1928, height=(int)1208, format=(string)NV12' ! nvvidconv ! 'video/x-raw, format=(string)NV12' ! videoconvert ! x264enc ! mpegtsmux ! filesink location=vid.mp4
(an example of something I tried that didn’t work, but I need to make something like this work).
Are there any tools that are able to move the data around as I require? Any help would be greatly appreciated.