如何检查缓冲区中的jpeg-image是不是被截断了?

时间:2017-05-04 13:37:53

标签: c++ validation jpeg

视频监管系统由三部分组成:

client-streamer(c ++) - > server(c ++) - >客户主管(浏览器/ js / websockets)

Streamer将jpeg帧从网络摄像头发送到服务器,服务器将此帧存储在此Streamer的std::string缓冲区中(map<string, string>Streamers - &gt; Streamers[ID].Camera)。当主管查询某个代理的流时,服务器将编码的Streamers[ID].Camera作为二进制发送给他(根据websocket standart)。结果图像在浏览器中闪烁!我认为服务器响应的是一个与代理的发布请求同时写入的帧,并且该帧正在发送给管理器被截断。这是一个截图: https://github.com/twbs/bootstrap/issues/12799 如果断开客户端,服务器将把他的最后一帧发送给主管,最后一帧始终是满的。这意味着发送和接收没有问题。我几乎可以肯定问题在于同时访问两个线程中的一个变量。

所以我想在服务器上添加一些框架,然后再发送给主管。类似的东西:

while(!FrameIsFull(CameraFrame)){
    Sleep(1);
}
SendAllData(Socket, websocket_encode(CameraFrame));

我应该做些什么bool FrameIsFull(string jpeg_frame);?

PS:FireFox也常常在控制台中写入“图像已损坏或被截断”并仅显示帧的一部分。它如何检查图像?

0 个答案:

没有答案