gpt4 book ai didi

image - 通过互联网传输图像(图像描述符)

转载 作者:可可西里 更新时间:2023-11-01 16:37:58 26 4
gpt4 key购买 nike

我需要将图像或图像描述符从客户端(智能手机)发送到服务器(处理机器)。服务器尝试识别视频流中的图像/特征,并发回检测到的图像/特征的 ID + 可能是一些额外的数据。通常识别过程不会持续超过几秒钟(考虑到要识别的图像数量很大)。理想情况下,处理服务器会在几毫秒内做出响应。

要检测的图像在“设置阶段”发送(如果有很大的延迟也没问题),然后以特定频率发送执行识别过程的采样视频帧,比方说5 帧/秒。 (当然频率是可变的)

实现它的最佳通信协议(protocol)是什么?代码将用 C/C++ 编写,但我更感兴趣的是工作流(概念)的外观,而不是代码实现。

HTTP 是否足够? RTSP 或其他东西怎么样?请记住,数据是从智能手机(互联网连接并不异常(exception))传输到处理机器(服务器、快速互联网连接)。

谢谢!

编辑:感谢您的回答。实际上,我一直在寻找可以实现我的特定需求的现有通信协议(protocol)之间的比较。正如我所说,我对实现“连接”的代码的复杂性不感兴趣。相对于我的用例,我希望看到它们之间的一些优点/缺点。另一方面,执行识别的服务器必须符合智能手机上运行的应用程序实现的通信协议(protocol)(+API),仅此而已。这意味着我不在乎服务器如何工作,只要它能够理解客户端请求并返回发出请求的应用程序可以理解的答案即可。

我忘了提(我的坏处)是我对所有为实现此用例提供支持的通信协议(protocol)感兴趣。

最佳答案

RTSP(实时流协议(protocol))不是您所需要的,因为它的设计理念截然不同。基本上你需要的是一个允许你上传文件(或其中的一部分)的协议(protocol)。

您可以使用像 TCP 这样的低级协议(protocol),它允许您随心所欲地流式传输任何内容,或者,您可以使用像 HTTP 这样的高级协议(protocol)> 鉴于此协议(protocol)包含分块传输编码机制(一种旨在允许您将分块(文件的片段)逐个发送到上传服务器的机制)。

在这两种情况下,您都可以将图像和视频上传到服务器。 HTTP 更容易,因为它是一个简单的协议(protocol),您可以找到很多代码示例来上传文件,实际上,例如,当您将文件上传到 youtube 时,您使用的是 HTTP(在这种情况下没有分块)。无论如何,我建议您使用分块传输编码机制,因为它允许您恢复上传(在暂停或互联网断开连接后)。

使用 HTTP(通过 TCP)的另一个很好的理由是服务器端代码会更容易,因为所有网络服务器都可以帮助您专注于真正的问题,去除不需要的细节。

因此,HTTP 非常适合您的要求,但是您应该考虑到没有任何协议(protocol)具有用于节流 的内置方法。这意味着如果你想发送 5 帧/秒,你将需要编写代码来控制它。

不过,如果你需要更高的控制,可以直接使用TCP。

使用 TCP(这是伪代码)

socket = new Socket(SERVER_IP, PORT, TCP_PROTOCOL);
nextFrame = 0;
while(videoManager.IsThereFrame(nextFrame)){
buffer = videoManager.ReadFrameAsByteArray(nextFrame++);
if(AmISendingTooFast) waitForAWhile()

socket.Write(buffer);
if(error) repeat or save the nextFrame to try again later.
}
socket.Close();

结论

HTTP 非常适合您的需要,请使用它。如果您的要求更复杂并且您希望拥有额外的完全控制权,请使用 TCP,但请记住这会更难,并且您没有网络服务器来帮助您。

希望对您有所帮助。

关于image - 通过互联网传输图像(图像描述符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23181388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com