Python PubSub-发布视频帧的最有效方法?

Python PubSub-发布视频帧的最有效方法?,python,google-cloud-pubsub,Python,Google Cloud Pubsub,我有一个从视频源生成多个帧的服务(使用OpenCV) 接下来,我将把这些帧编码为字节字符串,并通过Pub/Sub将它们作为一个批发布 # Encoding each (opencv) frame _, buffer = cv2.imencode('.jpg', frame) pub_sub.publish(buffer.tobytes()) # PubSub class class PubSub(object): def __init__(self, project_i

我有一个从视频源生成多个帧的服务(使用OpenCV)

接下来,我将把这些帧编码为字节字符串,并通过Pub/Sub将它们作为一个批发布

# Encoding each (opencv) frame
 _, buffer = cv2.imencode('.jpg', frame)

 pub_sub.publish(buffer.tobytes())


# PubSub class
class PubSub(object):
        def __init__(self, project_id='xxx', topic_name='xxx'):
            self.publisher = pubsub_v1.PublisherClient(
                    pubsub_v1.types.BatchSettings(max_latency=1)
            )
            self.topic_path = self.publisher.topic_path(project_id, topic_name)

        def publish(self, frame_as_bytes):
            future = self.publisher.publish(self.topic_path, data=frame_as_bytes)
            print(future.result())
            print('Published messages with batch settings.')
我的字节帧=大约300kb的数据

但是这里的延迟非常大,如何改进这些操作

更新

看来opencv编码操作的成本很高:

_, buffer = cv2.imencode('.jpg', frame, encode_param)
我正在我的笔记本电脑上运行这个程序,所以我相信这不会是一个有更多CPU的虚拟机的问题

我添加了以下几行以在编码前减少图像重量:

frame = frame_helper.rescale_frame(frame, scale_percent=40)
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 80]
这比现在快多了


我要用一台更大的机器再做一次测试

您是否确定延迟的来源?是编码吗?发送编辑:延迟来自通过OpenCV进行的帧编码。所以我相信这是因为我在笔记本电脑上运行它。我要用更高的配置来检查。