def initAndRun(self, cameraStream: cams.PiCameraCircularIO, file=None, parent=None): self.logger = self.logger.getChild( "RTSP") if file is None else self.logger.getChild("Record") self._myParent = parent self._redirectPackages(cameraStream, file) self.name = "cam_RTSP_queue" if file is None else "cam_file_queue" self.setDaemon(False) self.start() if parent is not None: try: with self.lock: with cameraStream.lock: save_pos = cameraStream.tell() try: pos = cameraStream._find_all( camf.PiVideoFrameType.sps_header) if pos is not None: cameraStream.seek(pos) while True: buf = cameraStream.read1() if not buf: break self._queue.put(buf) finally: cameraStream.seek(save_pos) cameraStream.clear() except: self.logger.exception("Konnte anfang nicht speichern")
def test_camera_stream_clear(): camera = mock.Mock() encoder = mock.Mock() camera._encoders = {1: encoder} stream = PiCameraCircularIO(camera, size=10) for data, frame in generate_frames('hkffkff'): encoder.frame = frame stream.write(data) stream.clear() assert stream.getvalue() == b'' assert list(stream.frames) == [] assert list(reversed(stream.frames)) == []