Guest User

Untitled

a guest
Apr 25th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. QUEUE_SIZE = 120
  2. grabbedFrames = Queue(QUEUE_SIZE)
  3. processFrames = Queue(QUEUE_SIZE)
  4.  
  5.  
  6. class FrameGraber(Thread):
  7.  
  8. def __init__(self):
  9. Thread.__init__(self)
  10. self.vs = VideoStream(src=REMOTE_STREAM_MJPEG).start()
  11.  
  12. def run(self):
  13. global grabbedFrames
  14.  
  15. while True:
  16. frame = self.vs.read()
  17. if frame is not None:
  18. grabbedFrames.put(frame)
  19. time.sleep(0.05)
  20.  
  21.  
  22. class GCSUploader(Thread):
  23.  
  24. def __init__(self):
  25. Thread.__init__(self)
  26. self.start()
  27. self.client = storage.Client()
  28. self.bucket = self.client.get_bucket(BUCKET_NAME)
  29.  
  30. def run(self):
  31. global processFrames
  32.  
  33. while True:
  34. if (not processFrames.empty()):
  35. fileName = processFrames.get()
  36. try:
  37. blob = self.bucket.blob("{}/{}/{}".format(RPID_FOLDER, BY_DAY, fileName))
  38. blob.upload_from_filename(os.path.abspath(fileName))
  39. print("{} uploaded to {}/{}".format(fileName, RPID_FOLDER, BY_DAY))
  40. os.remove(fileName)
  41. except Exception as e:
  42. print(e)
  43.  
  44.  
  45. class FrameProcessor(Thread):
  46.  
  47. def __init__(self):
  48. Thread.__init__(self)
  49. self.secondCount = 0
  50. self.startSecond = datetime.datetime.now().second
  51.  
  52. def run(self):
  53. global grabbedFrames, processFrames
  54. while True:
  55.  
  56. if datetime.datetime.now().second != self.startSecond:
  57. self.startSecond = datetime.datetime.now().second
  58. self.secondCount = 0
  59.  
  60. if (not grabbedFrames.empty()):
  61. frame = grabbedFrames.get()
  62. self.secondCount = self.secondCount + 1
  63. frame = imutils.resize(frame, 800)
  64. fileName = "{}-{}.png".format(datetime.datetime.now().strftime("%H-%M-%S"), self.secondCount)
  65. cv2.imwrite(fileName, frame)
  66. time.sleep(0.1)
  67. processFrames.put(fileName)
  68.  
  69.  
  70. if __name__ == "__main__":
  71.  
  72. uploader1 = GCSUploader()
  73. uploader2 = GCSUploader()
  74. uploader3 = GCSUploader()
  75. uploader4 = GCSUploader()
  76. uploader5 = GCSUploader()
  77. uploader6 = GCSUploader()
  78. uploader7 = GCSUploader()
  79. uploader8 = GCSUploader()
  80.  
  81. frameGrabber = FrameGraber()
  82. frameProcessor = FrameProcessor()
  83.  
  84. frameGrabber.start()
  85. frameProcessor.start()
  86.  
  87. frameProcessor.join()
  88. frameGrabber.join()
  89. uploader1.join()
  90. uploader2.join()
  91. uploader3.join()
  92. uploader4.join()
  93. uploader5.join()
  94. uploader6.join()
  95. uploader7.join()
  96. uploader8.join()
Add Comment
Please, Sign In to add comment