Python canlı video gönderimi

İlk kodda veri gönderilmiyor, alınıyor. Sanırım yanlış olmuş. Ben ikinci kodu anlatayım önce, sonra da birincisini anlatmaya çalışayım.

İlk olarak şu kodda

clientsocket.sendall(struct.pack("L", len(data))+data) ### new code

Neden veri uzunluğu ve veri gidiyor demişsin. Şunun için. Karşı taraf önce paketin boyutunu şu şekilde öğreniyor.

    while len(data) < payload_size:
        data += conn.recv(4096)

Karşı taraftan alacağı resmin boyutunu elde etti buraya kadar. Nereye kadar?

payload_size = struct.calcsize("L") 

İşaretsiz long bir sayının boyutu kadar. Sonra ne yapıyor? Hani paketlenmiş olarak geldi ya, işte onu çözüyor

msg_size = struct.unpack("L", packed_msg_size)[0]

Güzel. Şimdi karşıdaki resmin boyutunu biliyoruz. Alalım bakalım.

    while len(data) < msg_size:
        data += conn.recv(4096)

Şimdi bu veriyi çözelim

frame=pickle.loads(frame_data)

Gösterelim ekranda

cv2.imshow('frame',frame)

Peki neden boyutunu göndermesi gerekiyor? Çünkü programın aldığı her ekran görüntüsünün boyutu aynı olmuyor. Bu yüzden gönderileceği zaman karşı taraf önce boyutu öğreniyor, sonra da bu boyut kadar while döngüsüne girip veriyi tam olarak alabiliyor, yani resmin tam halini.

1 Beğeni