35 lines
932 B
Python
35 lines
932 B
Python
|
import cv2
|
||
|
import cPickle
|
||
|
import socket
|
||
|
import struct
|
||
|
|
||
|
TCP_IP = '127.0.0.1'
|
||
|
TCP_PORT = 9501
|
||
|
video_file = 'some_file.MP4'
|
||
|
|
||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # establishing a tcp connection
|
||
|
sock.bind((TCP_IP, TCP_PORT))
|
||
|
sock.listen(5)
|
||
|
|
||
|
while True:
|
||
|
(client_socket, client_address) = sock.accept() # wait for client
|
||
|
print 'connection established with ' +str(client_address)
|
||
|
cap = cv2.VideoCapture(video_file)
|
||
|
pos_frame = cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
|
||
|
while True:
|
||
|
flag, frame = cap.read()
|
||
|
if flag:
|
||
|
frame = cPickle.dumps(frame)
|
||
|
size = len(frame)
|
||
|
p = struct.pack('I', size)
|
||
|
frame = p + frame
|
||
|
client_socket.sendall(frame)
|
||
|
else:
|
||
|
cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, pos_frame-1)
|
||
|
|
||
|
if cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) == cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT):
|
||
|
size = 10
|
||
|
p = struct.pack("I", size)
|
||
|
client_socket.send(p)
|
||
|
client_socket.send('')
|
||
|
break
|