ReolinkCameraAPI / reolinkapipy

Reolink Camera API written in Python 3.6
GNU General Public License v3.0
210 stars 49 forks source link

Error while decoding MB #39

Open CrashLaker opened 3 years ago

CrashLaker commented 3 years ago

Hi all,

I just started playing with this. I'm just trying to get some consistent images from time to time. I'm using the streaming_video.py from examples folder but I'm getting a weird behaviour: image

[h264 @ 0x2bb0580] error while decoding MB 42 54, bytestream -5
[h264 @ 0x2bdf480] error while decoding MB 103 80, bytestream -15
[h264 @ 0x2bb1780] error while decoding MB 87 36, bytestream -5
[h264 @ 0x2bdf480] error while decoding MB 8 32, bytestream -11
[h264 @ 0x2bb1780] error while decoding MB 31 18, bytestream -5
[h264 @ 0x2bb0580] error while decoding MB 41 75, bytestream -9

Also the image is rendered broken sometimes. How can I solve this?

  7 def non_blocking():
  8     print("calling non-blocking")
  9     def inner_callback(img):
 10         now = int(datetime.datetime.now().timestamp())
 11         cv2.imwrite(f"/path/{now}.png",
 12                     img)
 13         cv2.destroyAllWindows()

Regards, C.

CrashLaker commented 3 years ago

this seems to render better snap images

cap = cv2.VideoCapture("rstp://....")
while True:
    ret, frame = cap.read()
    if not ret: continue
    cv2.imwrite(" ", frame)
    time.sleep(2)
Benehiko commented 3 years ago

Interesting, seems to be related to https://github.com/ReolinkCameraAPI/reolinkapipy/issues/25#issuecomment-738765454

Which camera are you using?

Also, we are using the FFMPEG streaming flag, as mentioned here https://github.com/ReolinkCameraAPI/reolinkapipy/blob/32e602571d8a67de15f1a82cba73d93d12c2e6d1/reolinkapi/utils/rtsp_client.py#L50

I have added a comment there in my last commit contemplating the necessity of it. It might be the reason for your streaming issues and @PortScanner. I thought that it might fix the issue opening the stream in its own thread as mentioned in this SO thread.

ghost commented 3 years ago

Hi In the meantime I am working without the Reolink API and sometimes I still get the error messages. However, when I restart the camera there are no more errors. It doesn't seem to be a problem with the API, but with the camera (Reolink: RLC-511W).

vs = VideoStream("rtsp://abcde:123456@192.168.178.xx:554//h264Preview_01_sub").start()
time.sleep(2)

while True:
    try:
        frame = vs.read()
        frame = imutils.resize(frame, width=500)
        orig = frame.copy()
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        frame = Image.fromarray(frame)
        cv2.imshow("Test", orig)
    except:
        vs = VideoStream("rtsp://abcde:123456@192.168.178.65:554//h264Preview_01_sub").start()
    key = cv2.waitKey(100) & 0xFF
    if key == ord("q"):
        print('')
        break
cv2.destroyAllWindows()
vs.stop()