Video test GStreamer issue

I’m getting this problem what could be?“videotestsrc ! videoconvert ! appsink”, Videoio.CAP_GSTREAMER);

the error:
mat.isContinuous() must be true.

there is no such error here

are you sure it is from that line of code ?
is this the complete error msg ?
can you show some more ?
opencv / gstreamer version ?

Hi @berak thank you for the reply.

I’m using UnityCVFor Android:

void Update()

        Imgproc.cvtColor(rgbMat, rgbMat, Imgproc.COLOR_BGR2RGB);

        if (fpsMonitor != null)
            fpsMonitor.Add("CAP_PROP_POS_MSEC", capture.get(Videoio.CAP_PROP_POS_MSEC).ToString());
            fpsMonitor.Add("CAP_PROP_POS_FRAMES", capture.get(Videoio.CAP_PROP_POS_FRAMES).ToString());
            fpsMonitor.Add("CAP_PROP_POS_AVI_RATIO", capture.get(Videoio.CAP_PROP_POS_AVI_RATIO).ToString());
            fpsMonitor.Add("CAP_PROP_FRAME_COUNT", capture.get(Videoio.CAP_PROP_FRAME_COUNT).ToString());
            int msec = (int)Math.Round(1000.0 * (currentFrameTickCount - prevFrameTickCount) / Core.getTickFrequency());
            int fps = (int)Math.Round(1000.0 / msec);
            fpsMonitor.Add("STATE", msec + "ms (" + fps + "fps)");            

        Utils.fastMatToTexture2D(rgbMat, texture);
        var tmp = seekBarSlider.onValueChanged;
        seekBarSlider.onValueChanged = defaultSliderEvent;
        seekBarSlider.value = (float)capture.get(Videoio.CAP_PROP_POS_AVI_RATIO);
        seekBarSlider.onValueChanged = tmp;

the line that gives the error is:
Utils.fastMatToTexture2D(rgbMat, texture);

I saw that the rgbMat.rows() and rgbMat.cols() return 0 should be becuase of that.
The program is not able to read the rtbMat from the video test for some reason.

opencv 4.5.2 (compiled for android)

most likely the cause of it.
please check, if the capture even opened, if retrieve() returned something valid.
also check Core.getBuildInformation() to see if there is any support for gstreamer builtin

You’re right, the video is not even opened:

this return false: capture.isOpened()

so I think the compiled DLL (.so on android) isn’t well compiled or there are incompatibilities on the unity side.

I was able to play it with the windows version on Unity.

the Core.getBuildInformation()
says that I’m using the static one and gstreamer is not included:

    Built as dynamic libs?:      NO
    C++ standard:                11
    C++ Compiler:                C:/Users/felipe.chaves/AppData/Local/Android/Sdk/ndk/19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe  (ver 8.0)
    C++ flags (Release):         -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mfpu=vfpv3-d16 -fno-addrsig -march=armv7-a -mthumb -mfpu=neon -Wa,--noexecstack -Wformat -Werror=format-security -stdlib=libc++    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -fdiagnostics-show-option -Qunused-arguments  -fvisibility=hidden -fvisibility-inlines-hidden  -Oz -DNDEBUG   -DNDEBUG
    C++ flags (Debug):           -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mfpu=vfpv3-d16 -fno-addrsig -march=armv7-a -mthumb -mfpu=neon -Wa,--noexecstack -Wformat -Werror=format-security -stdlib=libc++    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -fdiagnostics-show-option -Qunused-arguments  -fvisibility=hidden -fvisibility-inlines-hidden  -O0 -fno-limit-debug-info   -DDEBUG -D_DEBUG -g
    C Compiler:                  C:/Users/felipe.chaves/AppData/Local/Android/Sdk/ndk/19.2.5345600/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe
    C flags (Release):           -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mfpu=vfpv3-d16 -fno-addrsig -march=armv7-a -mthumb -mfpu=neon -Wa,--noexecstack -Wformat -Werror=format-security    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -fdiagnostics-show-option -Qunused-arguments  -fvisibility=hidden -fvisibility-inlines-hidden  -Oz -DNDEBUG   -DNDEBUG
    C flags (Debug):             -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mfpu=vfpv3-d16 -fno-addrsig -march=armv7-a -mthumb -mfpu=neon -Wa,--noexecstack -Wformat -Werror=format-security    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -Wno-comment -fdiagnostics-show-option -Qunused-arguments  -fvisibility=hidden -fvisibility-inlines-hidden  -O0 -fno-limit-debug-info   -DDEBUG -D_DEBUG -g
    Linker flags (Release):      -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now   -Wl,--as-needed  
    Linker flags (Debug):        -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now   -Wl,--as-needed  
    ccache:                      NO
    Precompiled headers:         NO
    Extra dependencies:          freetype harfbuzz dl m log
    3rdparty dependencies:       libcpufeatures ittnotify libprotobuf ade tbb libjpeg-turbo libwebp libpng libtiff libopenjp2 IlmImf zlib quirc tegra_hal

  OpenCV modules:
    To be built:                 aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform java line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
    Disabled:                    world
    Disabled by dependency:      -
    Unavailable:                 alphamat cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv hdf julia matlab ovis python2 python3 sfm ts viz
    Applications:                -
    Documentation:               NO
    Non-free algorithms:         NO

  Android NDK:                   C:/Users/felipe.chaves/AppData/Local/Android/Sdk/ndk/19.2.5345600 (ver 19.2.5345600)
    Android ABI:                 armeabi-v7a
    NDK toolchain:               arm-linux-androideabi-clang
    STL type:                    c++_static
    Native API level:            28
  Android SDK:                   C:/Users/felipe.chaves/AppData/Local/Android/Sdk (tools: 26.1.1 build tools: 30.0.2)


  Media I/O: 
    ZLib:                        build (ver 1.2.11)
    JPEG:                        build-libjpeg-turbo (ver 2.0.6-62)
    WEBP:                        build (ver encoder: 0x020f)
    PNG:                         build (ver 1.6.37)
    TIFF:                        build (ver 42 - 4.2.0)
    JPEG 2000:                   build (ver 2.4.0)
    OpenEXR:                     build (ver 2.3.0)
    HDR:                         YES
    SUNRASTER:                   YES
    PXM:                         YES
    PFM:                         YES

  Video I/O:

  Parallel framework:            TBB (ver 2020.2 interface 11102)

  Trace:                         YES (with Intel ITT)

  Other third-party libraries:
    Custom HAL:                  YES (carotene (ver 0.0.1))
    Protobuf:                    build (3.5.1)

  Python (for build):            C:/Users/felipe.chaves/AppData/Local/Microsoft/WindowsApps/python3.exe

  Java:                          export all functions
    ant:                         NO
    Java wrappers:               YES
    Java tests:                  NO

  Install to:                    C:/Users/felipe.chaves/Downloads/opencv4.5.2/buildandroid/o4a/install

that’s what i thought.
to use gstreamer on android, you’d need gstreamer crosscompiled for your android arch,
and rebuild the opencv android libs with that

The command said on the ReadMe.pdf is enough to include gstreamer on the android version?

python …/opencv/platforms/android/ …/build …/opencv
–ndk_path=C://android-ndk --sdk_path=C://android-sdk
–extra_modules_path=…/opencv_contrib/modules --use_android_buildtools