Hello,
I'm developing an application for the IMX8M Mini using opencv videocapture with a GStreamer backend. So far, I have the following pipeline, which works and outputs video in YUV format:
cv::VideoCapture("filesrc location=<filename>.mp4 ! video/quicktime,systemstream=true ! aiurdemux name=demux demux. ! queue ! vpudec ! queue ! appsink", cv::CAP_GSTREAMER));
However, I would like to have the video in RGB, as later on in the program I need to use the video input as an OpenGL texture. My approach for this has been to add the imxvideoconvert_g2d to the GStreamer pipeline.
When I run the following pipeline from the command line, I get video output as expected:
gst-launch-1.0 filesrc location=<filename> ! video/quicktime,systemstream=true ! aiurdemux name=demux demux.video_0 ! vpudec ! imxvideoconvert_g2d ! video/x-raw,format=RGB16 ! waylandsink
However, when I try to use this pipeline in the application, I get GStreamer linking errors with aiurdemx:
Pipeline:
cv::VideoCapture("filesrc location=/media/1080_grapes.mp4 ! video/quicktime,systemstream=true ! aiurdemux name=demux demux.video_0 ! vpudec ! imxvideoconvert_g2d ! video/x-raw,format=RGB16 ! appsink", cv::CAP_GSTREAMER));
Linking Errors:
0:00:00.078805339 1474 0xffffb418a8a0 WARN default grammar.y:506:gst_parse_no_more_pads:<demux> warning: Delayed linking failed.
0:00:00.078868090 1474 0xffffb418a8a0 WARN default grammar.y:506:gst_parse_no_more_pads:<demux> warning: failed delayed linking pad video_0 of GstAiurDemux named demux to some pad of GstVpuDec named vpudec0
Thank you in advance for any help with this.
Hello graham-s,
The problem looks like that the pads video_0
have been renamed video_00
and also miss audio. This can be seen using gst-inspect-1.0 aiurdemux
, which indicates that the format for the pads now reads video_%u
.
Regards
Hello,
Thank you for the quick reply!
Sorry, the video_0 name was left over from when I was trying different things to make it work, I should have removed that before posting. However, when I remove it, I still get the same error.
Both of the following pipelines still give me the same delayed linking error as in my original post:
cv::VideoCapture("filesrc location=/media/1080_grapes.mp4 ! video/quicktime,systemstream=true ! aiurdemux name=demux demux.video_%u ! vpudec ! videoconvert ! video/x-raw,format=RGB16 ! appsink", cv::CAP_GSTREAMER);
new cv::VideoCapture("filesrc location=/media/1080_grapes.mp4 ! video/quicktime,systemstream=true ! aiurdemux name=demux demux. ! vpudec ! videoconvert ! video/x-raw,format=RGB16 ! appsink", cv::CAP_GSTREAMER);
Additionally, I don't need audio for my application. Do I need to handle the audio as well in order for the pipeline to work?
Best,
Graham