Skip to content

Instantly share code, notes, and snippets.

@skyzh
Last active August 6, 2018 09:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skyzh/e47882e0c99418c5f3da6573f229c2cc to your computer and use it in GitHub Desktop.
Save skyzh/e47882e0c99418c5f3da6573f229c2cc to your computer and use it in GitHub Desktop.
Screen stream server
import cv2
import numpy as np
from http.server import BaseHTTPRequestHandler, HTTPServer
import pyautogui
class CamHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path.endswith('.mjpg'):
self.send_response(200)
self.send_header('Content-type','multipart/x-mixed-replace; boundary=--jpgboundary')
self.end_headers()
print("Received connection!")
while True:
try:
__img = self.capture_func()
if not __img is None:
success, __encoded = cv2.imencode(".jpg", __img)
if success:
self.wfile.write(b"--jpgboundary")
self.send_header('Content-type', b'image/jpeg')
self.send_header('Content-length', len(__encoded))
self.end_headers()
self.wfile.write(__encoded.tobytes())
else:
break
else:
break
except KeyboardInterrupt:
break
class CamServer(HTTPServer):
def serve_forever(self, capture_func):
self.RequestHandlerClass.capture_func = capture_func
HTTPServer.serve_forever(self)
def capture_func(self):
image = pyautogui.screenshot()
aimage = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
return aimage
HOST="127.0.0.1"
PORT=4000
server = CamServer((HOST, PORT), CamHandler)
server.serve_forever(capture_func)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment