如何将实时数据传输到ec2实例?

问题描述

整个过程可以用以下步骤来描述 -

  1. 将图像帧发送到 EC2 实例
  2. 流程框架
  3. 发回给客户

我使用了socket编程,暴露了一个端口并向其传输数据。这种方法非常慢,发送一帧平均需要0.7秒,从服务器传输到客户端平均需要1.2秒。下面是我的代码片段使用:

Client:读取一个帧,传输到服务器,然后,接收处理后的帧返回并显示

  ret,frame = cap.read()
  data = pickle.dumps(frame) # Serialising data
  message_size = struct.pack("L",len(data))
  clientsocket.sendall(message_size + data) #Sending frame

  
  #Receiving frame
  while len(recv_data) < payload_size:
    recv_data += clientsocket.recv(8192)

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

  while len(recv_data) < msg_size:
    recv_data += clientsocket.recv(8192)


  frame_data = recv_data[:msg_size]
  new_frame = pickle.loads(frame_data)
  recv_data       = recv_data[msg_size:]

  #displaying received data
  cv2.namedWindow("output",cv2.WINDOW_norMAL)     
  cv2.imshow("output",new_frame)
  

服务器:接收帧,处理它,将处理后的帧发送回客户端

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)
  #Processing frame


  new_frame      = pickle.dumps(frame)
  #Data received
  message_size = struct.pack("L",len(new_frame))
  #Sending data back
  conn.sendall(message_size + new_frame)

这种方法很慢,需要实时传输数据。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)