Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- QUEUE_SIZE = 120
- grabbedFrames = Queue(QUEUE_SIZE)
- processFrames = Queue(QUEUE_SIZE)
- class FrameGraber(Thread):
- def __init__(self):
- Thread.__init__(self)
- self.vs = VideoStream(src=REMOTE_STREAM_MJPEG).start()
- def run(self):
- global grabbedFrames
- while True:
- frame = self.vs.read()
- if frame is not None:
- grabbedFrames.put(frame)
- time.sleep(0.05)
- class GCSUploader(Thread):
- def __init__(self):
- Thread.__init__(self)
- self.start()
- self.client = storage.Client()
- self.bucket = self.client.get_bucket(BUCKET_NAME)
- def run(self):
- global processFrames
- while True:
- if (not processFrames.empty()):
- fileName = processFrames.get()
- try:
- blob = self.bucket.blob("{}/{}/{}".format(RPID_FOLDER, BY_DAY, fileName))
- blob.upload_from_filename(os.path.abspath(fileName))
- print("{} uploaded to {}/{}".format(fileName, RPID_FOLDER, BY_DAY))
- os.remove(fileName)
- except Exception as e:
- print(e)
- class FrameProcessor(Thread):
- def __init__(self):
- Thread.__init__(self)
- self.secondCount = 0
- self.startSecond = datetime.datetime.now().second
- def run(self):
- global grabbedFrames, processFrames
- while True:
- if datetime.datetime.now().second != self.startSecond:
- self.startSecond = datetime.datetime.now().second
- self.secondCount = 0
- if (not grabbedFrames.empty()):
- frame = grabbedFrames.get()
- self.secondCount = self.secondCount + 1
- frame = imutils.resize(frame, 800)
- fileName = "{}-{}.png".format(datetime.datetime.now().strftime("%H-%M-%S"), self.secondCount)
- cv2.imwrite(fileName, frame)
- time.sleep(0.1)
- processFrames.put(fileName)
- if __name__ == "__main__":
- uploader1 = GCSUploader()
- uploader2 = GCSUploader()
- uploader3 = GCSUploader()
- uploader4 = GCSUploader()
- uploader5 = GCSUploader()
- uploader6 = GCSUploader()
- uploader7 = GCSUploader()
- uploader8 = GCSUploader()
- frameGrabber = FrameGraber()
- frameProcessor = FrameProcessor()
- frameGrabber.start()
- frameProcessor.start()
- frameProcessor.join()
- frameGrabber.join()
- uploader1.join()
- uploader2.join()
- uploader3.join()
- uploader4.join()
- uploader5.join()
- uploader6.join()
- uploader7.join()
- uploader8.join()
Add Comment
Please, Sign In to add comment