python - 如何将实时数据传输到 ec2 实例?
问题描述
整个过程可以描述为以下步骤 -
- 将图像帧发送到 EC2 实例
- 工艺框架
- 发回给客户
我用socket编程,暴露了一个端口,向它传输数据。这种方法很慢,平均需要0.7秒发送一帧,1.2秒从服务器传输到客户端。下面是我使用的代码片段:
客户端:读取一个帧,传输到服务器,然后,接收处理后的帧并显示它
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)
这种方法速度很慢,需要实时传输数据。
解决方案
推荐阅读
- css - ngClass 和打印媒体查询不能一起工作
- prestashop - Prestashop 1.7 - 后台缺少翻译
- reactjs - Outlook React Addin 中的空白身份验证对话框窗口
- sql - 使用混合数据和添加列进行透视
- amazon-web-services - EKS 自动扩缩器 HA 配置
- c# - 什么 c# async / await 可以做任务类型不能做的事情?
- python - 什么是正确的 xpath?
- django - Django:如何按 Range_Date 求和
- ruby-on-rails - 无法为我不使用的格式拯救 ActionController::UnknownFormat
- php - 使用 php Doctrine,有没有办法通过具有不同排序规则的两列来建立关系?