hanyazou/TelloPy

av.error.InvalidDataError: [Errno 1094995529] Invalid data found when processing input; last error log: [hevc] PPS id out of range: 6

chercy1 opened this issue · 0 comments

When I'm trying to open an RTSP stream using PyAV, I encountered an issue. I attempted to open the RTSP stream with the following code:
import time

import av

class YDRtmpThread:
def init(self):
self.container = None
self.reconnect()
self.__running_flag = True

def start_capture_camera(self):
    while self.__running_flag:
        try:
            if self.fps is None:
                time.sleep(1)
                self.reconnect()
                continue
            if self.frames is None:
                self.frames = self.container.decode(video=0)
            frame = next(self.frames)
            img = frame.to_ndarray(format='bgr24')
        except Exception as e:
            print(e)
            self.fps = None

def reconnect(self):
    try:
        self.frames = None
        self.fps = None
        rtmpUrl = ''
        self.close_container()
        options = {"rtsp_transport": "tcp"}
        self.container = av.open(rtmpUrl, options=options, timeout=10)
        self.container.non_block = True
        stream = self.container.streams.video[0]
        self.fps = stream.average_rate
        print(self.fps)
    except Exception as e:
        print(e)

def close_container(self):
    if self.container:
        self.container.close()
        self.container = None

if name == 'main':
yd = YDRtmpThread()
yd.start_capture_camera()

However, I encountered an error:
av.error.InvalidDataError: [Errno 1094995529] Invalid data found when processing input; last error log: [hevc] PPS id out of range: 6

This error, when it occurs, seems to lead to an increase in system memory when I attempt to reopen the same RTSP stream. There are indications of memory overflow, possibly resulting in a memory leak.