Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- https://github.com/jeremyfix/udp_video_streaming/tree/master/udp_socket
- #!/usr/bin/env python
- # coding: utf-8
- import socket
- import cv2
- import sys
- import argparse
- import video_grabber
- parser = argparse.ArgumentParser()
- parser.add_argument('--port', type=int, help='The port on which the server is listening', required=True)
- parser.add_argument('--jpeg_quality', type=int, help='The JPEG quality for compressing the reply', default=50)
- parser.add_argument('--encoder', type=str, choices=['cv2','turbo'], help='Which library to use to encode/decode in JPEG the images', default='cv2')
- args = parser.parse_args()
- jpeg_quality = args.jpeg_quality
- host = ''
- port = args.port
- encoder = args.encoder
- # The grabber of the webcam
- grabber = video_grabber.VideoGrabber(jpeg_quality, encoder)
- grabber.start()
- get_message = lambda: grabber.get_buffer()
- keep_running = True
- sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- # Bind the socket to the port
- server_address = (host, port)
- print('starting up on %s port %s\n' % server_address)
- sock.bind(server_address)
- while(keep_running):
- data, address = sock.recvfrom(4)
- data = data.decode('utf-8')
- if(data == "get"):
- buffer = get_message()
- if buffer is None:
- continue
- if len(buffer) > 65507:
- print("The message is too large to be sent within a single UDP datagram. We do not handle splitting the message in multiple datagrams")
- sock.sendto("FAIL".encode('utf-8'),address)
- continue
- # We send back the buffer to the client
- sock.sendto(buffer, address)
- elif(data == "quit"):
- grabber.stop()
- keep_running = False
- print("Quitting..")
- grabber.join()
- sock.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement