İstemcimden (Raspberry Pi) dizüstü bilgisayarda barındırılan bir sunucuya canlı video karesi göndermeye çalışıyorum. Her iki cihaz da aynı ağa bağlanır.Raspberry Pi'de OpenCV ve soketleri kullanarak TCP üzerinden Video Gönderme
Server.py
import socket
import sys
import cv2
import pickle
import numpy as np
import struct
HOST = '192.168.1.3'
PORT = 8083
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
s.bind((HOST, PORT))
print 'Socket bind complete'
s.listen(10)
print 'Socket now listening'
conn, addr = s.accept()
data = ""
payload_size = struct.calcsize("L")
while True:
while len(data) < payload_size:
data += conn.recv(4096)
packed_msg_size = data[:payload_size]
data = data[payload_size:]
msg_size = struct.unpack("L", packed_msg_size)[0]
while len(data) < msg_size:
data += conn.recv(4096)
frame_data = data[:msg_size]
data = data[msg_size:]
frame=pickle.loads(frame_data)
print frame.size
# cv2.imshow('frame', frame)
# cv2.waitKey(10)
Client.py dizüstü
import cv2
import numpy as np
import socket
import sys
import pickle
import struct
cap = cv2.VideoCapture(0)
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.1.3', 8081))
while True:
ret,frame = cap.read()
data = pickle.dumps(frame)
clientsocket.sendall(struct.pack("L", len(data)) + data)
My Sunucu, hiçbir veri almıyor. Ancak bu istemci ve sunucuyu aynı cihazlarda çalıştırdığımda (ör. Sunucudaki sunucu ve istemci), düzgün çalışıyor.
Ahudududan dizüstü bilgisayara veri gönderebiliyorum (yankı uygulaması için test edilmiştir).
Bu konuda bana yardımcı olan var mı?
Neden bu tür bir kullanım için tasarlanmış UDP yerine video akışı için TCP kullanıyorsunuz anlamıyorum – Humoyun