I am running GStreamer Core Library version 1.14.5… and creating Gstreamer pipes. I am struggling with converting pipes with ‘omxh264dec’ and trying to use ‘nvv4l2decoder’ as suggested… and I cannot get anything to actually work yet.
I’ve seen that maybe I need ‘nvvideoconvert’… but it seems I don’t have that plugin.
Here is what I am trying to do:
std::string pipe = “rtspsrc location=rtsp://admin:pswd@192.168.1.30:554/cam/realmonitor?channel=1&subtype=0 ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvideoconvert ! appsink”;
IN the end, I have this RTSP stream coming from IP video camera… into OpenCV… and trying to use hardware decoding to not load the CPU so much.
I have tried many, many PIPELINES using nvv4l2decoder… but nothing works. No errors. Just nothing in the app.
This works… but has issue of bottom 10 rows of pixels are messed up in the frame… no idea why…
// std::string pipe = “rtspsrc location=rtsp://admin:pswd@192.168.1.30:554/cam/realmonitor?channel=1&subtype=0 ! rtph264depay ! h264parse ! omxh264dec ! video/x-raw(memory:NVMM),format=(string)NV12 ! nvvidconv ! video/x-raw, format=(string)BGRx ! videoconvert ! appsink”;
Ideas? Where do I get nvvideoconvert and then need to rebuild OpenCV with improved Gstreamer?
THANKS
DaneLLL
September 3, 2020, 4:12am
3
Hi,
Please check if you can run the gst-launch-1.0 command:
$ gst-launch-1.0 rtspsrc location=rtsp://admin:pswd@192.168.1.30:554/cam/realmonitor?channel=1&subtype=0 ! rtph264depay ! nvv4l2decoder ! nvoverlaysink
If you can run the command, please try
std::string pipe = "rtspsrc location=rtsp://admin:pswd@192.168.1.30:554/cam/realmonitor?channel=1&subtype=0 ! rtph264depay ! nvv4l2decoder ! nvvidconv ! video/x-raw,format=BGRx ! videoconvert ! appsink";
BGR format is not supported in nvvideoconvert so you would need videoconvert plugin.
Thank You all… I have successfully achieved Gstreamer pipe with hardware decoding… and encoding as well.
Thanks for all your help!
std::string pipe = "rtspsrc location=rtsp://admin:pswd#@192.168.1.30:554/cam/realmonitor?channel=1&subtype=0 ! rtph264depay
! nvv4l2decoder ! video/x-raw(memory:NVMM),format=NV12 ! nvvidconv ! video/x-raw,format=BGRx,width=3840,height=2160 ! videoconvert ! appsink";
std::string motion_writer_pipe = "appsrc ! videoconvert ! video/x-raw,format=BGRx,width=3840,height=2160,framerate=12/1 ! nvvidconv ! video/x-raw(memory:NVMM),width=1920,height=1080,format=NV12,framerate=12/1 ! nvv4l2h265enc bitrate=5000000 ! h265parse ! qtmux ! filesink location =" + savedMotionVideoFullPath;