Code stopped working on JP4.4DP - OpenCV VideoWriter

Hi,

Moved to JP4.4DP, this working code on JP3.2 breaks now:

VideoWriter* w = new VideoWriter();
char s[2048];
sprintf(s,“appsrc ! autovideoconvert ! omxh264enc bitrate=100000000 preset-level=2 ! video/x-h264 ! h264parse ! qtmux ! filesink location=/ext/tries/video/OUT_VIDEO.mp4 -e”);
w->open(s,0,20,cv::Size(1024,768),true);

ffmpg is installed from source, no errors shown on installation.

Questions:

  1. Any ideas what changed and can cause this ?
  2. Is there any other way to write openCV Mat into mp4 video ?

Thanks for the help !!

P.S.
here is the log I get:

[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (369) open VIDEOIO(FFMPEG): trying writer with filename=‘appsrc ! autovideoconvert ! omxh264enc bitrate=100000000 preset-level=2 ! video/x-h264 ! h264parse ! qtmux ! filesink location=/ext/tries/video/OUT_VIDEO.mp4 -e’ fourcc=0x00000000 fps=20 sz=1920x1080 isColor=1…
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (389) open VIDEOIO(FFMPEG): can’t create writer
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (369) open VIDEOIO(GSTREAMER): trying writer with filename=‘appsrc ! autovideoconvert ! omxh264enc bitrate=100000000 preset-level=2 ! video/x-h264 ! h264parse ! qtmux ! filesink location=/ext/tries/video/OUT_VIDEO.mp4 -e’ fourcc=0x00000000 fps=20 sz=1920x1080 isColor=1…
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_gstreamer.cpp (1422) open OpenCV | GStreamer warning: error opening writer pipeline: syntax error
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (389) open VIDEOIO(GSTREAMER): can’t create writer
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (369) open VIDEOIO(INTEL_MFX): trying writer with filename=‘appsrc ! autovideoconvert ! omxh264enc bitrate=100000000 preset-level=2 ! video/x-h264 ! h264parse ! qtmux ! filesink location=/ext/tries/video/OUT_VIDEO.mp4 -e’ fourcc=0x00000000 fps=20 sz=1920x1080 isColor=1…
[ INFO:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/backend_plugin.cpp (329) getPluginCandidates VideoIO pluigin (INTEL_MFX): glob is ‘libopencv_videoio_intel_mfx*.so’, 1 location(s)
[ INFO:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/backend_plugin.cpp (336) getPluginCandidates - /usr/lib/aarch64-linux-gnu: 0
[ INFO:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/backend_plugin.cpp (340) getPluginCandidates Found 0 plugin(s) for INTEL_MFX
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (402) open VIDEOIO(INTEL_MFX): backend is not available (plugin is missing, or can’t be loaded due dependencies or it is not compatible)
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (369) open VIDEOIO(CV_IMAGES): trying writer with filename=‘appsrc ! autovideoconvert ! omxh264enc bitrate=100000000 preset-level=2 ! video/x-h264 ! h264parse ! qtmux ! filesink location=/ext/tries/video/OUT_VIDEO.mp4 -e’ fourcc=0x00000000 fps=20 sz=1920x1080 isColor=1…
[ INFO:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap_images.cpp (282) icvExtractPattern Pattern: appsrc ! autovideoconvert ! omxh264enc bitrate=100000000 preset-level=2 ! video/x-h264 ! h264parse ! qtmux ! filesink location=/ext/tries/video/OUT_VIDEO.mp%01d -e @ 4
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (389) open VIDEOIO(CV_IMAGES): can’t create writer
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (369) open VIDEOIO(CV_MJPEG): trying writer with filename=‘appsrc ! autovideoconvert ! omxh264enc bitrate=100000000 preset-level=2 ! video/x-h264 ! h264parse ! qtmux ! filesink location=/ext/tries/video/OUT_VIDEO.mp4 -e’ fourcc=0x00000000 fps=20 sz=1920x1080 isColor=1…
[ WARN:3] global /home/nvidia/host/build_opencv/nv_opencv/modules/videoio/src/cap.cpp (389) open VIDEOIO(CV_MJPEG): can’t create writer

You may try removing the ‘-e’ from your pipeline, as it is a gst-launch-1.0 flag, but not part of the pipeline and causes gstreamer failing to parse it.
Be also sure your user has write permission for target directory.
This pipeline works fine with omxh264enc or nvv4l2h264enc on my Xavier with R32.4.2:

"appsrc ! video/x-raw, format=BGR ! queue ! videoconvert ! video/x-raw, format=BGRx ! nvvidconv ! nvv4l2h264enc ! video/x-h264, stream-format=byte-stream ! h264parse ! qtmux ! filesink location=test.mov "

You may also specify gstreamer API such as:

w->open(s, cv::CAP_GSTREAMER, 0, fps, cv::Size(width, height));

Works, thanks a lot !