1

I am writing a small script in python3.8 to read frames from a rtsp camera. The code is as follows:

import cv2 
gst_out =  "rtsp://admin:psw@IP:88/videoMain"
cap = cv2.VideoCapture(gst_out, cv2.CAP_FFMPEG)

while(cap.isOpened()):
    ret, frame = cap.read()
    print("New Frame")
    cv2.imshow('frame', frame)
    if cv2.waitKey(20) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

However, cap is never opened and i do not understand why. I am using opencv 4.5.2 in ubuntu 20.04. This is what i get when i call cv2.getBuildInformation():

 Video I/O:
    DC1394:                      NO
    FFMPEG:                      YES
      avcodec:                   YES (58.54.100)
      avformat:                  YES (58.29.100)
      avutil:                    YES (56.31.100)
      swscale:                   YES (5.5.100)
      avresample:                NO
    GStreamer:                   YES (1.16.2)
    v4l/v4l2:                    YES (linux/videodev2.h)

So as you can see FFMPEG is available. In fact, when i execute ffmpeg in terminal, i get the following:

ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Could you tell me what could be wrong? I have tested the IP in the browser and everything is working properly.

Thank you

7
  • I don't know if it's relevant, but I noticed that in your opencv build avresample is marked NO. In my environment (using opencv 4.5.5) it is marked YES (4.0.0). Commented Jan 19, 2023 at 16:24
  • 1
    For testing if your OpenCV supports RTSP protocol, I recommend testing with public RTSP: gst_out = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4". In case it's working, the issue is probably related to the camera. From time to time there is a question about failing to grab frames from RTSP camera using OpenCV. Instead of using OpenCV, you may use FFmpeg CLI, as in my following answer. Commented Jan 19, 2023 at 17:07
  • @wohlstad, i thought this could be the problem however it seems that this library is deprecated Commented Jan 19, 2023 at 17:12
  • @Rotem, it works with the public RTSP. It is quite weird because i tested my code in Windows and it worked but not in ubuntu Commented Jan 19, 2023 at 17:30
  • @Rotem, the camera is with PoE instead of direct Ethernet connection. Could this affect? Commented Jan 20, 2023 at 7:56

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.