通过http GET请求接收JPEG图像
Receiving JPEG images via http GET request
我想通过GET请求从IP摄像机通过HTTP接收图像。我写了一个程序,创建TCP套接字连接到相机,并发送以下GET请求到相机:
GET /mjpeg?res=full HTTP/1.1rnHost: 143.205.116.14rnrn
之后,在while循环中使用以下函数接收图像:
while((tmpres = recv(sock,(void *) buf, SIZE, 0)) > 0 && check<10)
…
,其中SIZE
表示缓冲区的大小。实际上,我不知道这里应该定义多大。我收到一张2940x1920的彩色图像。我定义了SIZE=2940x1920x3
。收到MJPEG图像后,我用ffmpeg解码。但我观察到ffmpeg只是部分/不正确地解码图像,我只看到一半(甚至更少)的图像。我想可能是尺寸的问题。在这方面的任何帮助都将是非常感谢的。
问候,汗
为什么要(无数次地)重新发明轮子?使用现成的HTTP客户端库,如libcurl
。
对于这个问题,也许您甚至可以使用curl
命令行程序将整个解决方案编写为shell脚本:
#!/bin/sh
curl -O "http://143.205.116.14/mjpeg?res=full" || echo "Error."
curl -o myfile.jpg "http://143.205.116.14/mjpeg?res=full" || echo "Error."
# ffmpeg ...
将收到的字节保存为二进制文件并进行分析。可能是不完整的图像(图像可以编码为渐进式JPEG -实际上是隔行的-这意味着如果截断文件,您将看到水平线),也可能是ffmpeg解码问题。或者别的什么。什么是check < 10
条件
相关文章:
- 如何从未签名的char*数组中获取JPEG图像数组
- 意外的摄像头校准结果与JPEG图像和EXIF方向上的OPENCV结果
- 如何使用avcodec从OpenCV::Mat类型的jpeg图像创建视频
- 带有 JPEG 图像的组合框
- 如何在Qt中将Jpeg Base64字符串转换为jpeg图像
- 如何将 JPEG 注释添加到现有的 JPEG 图像文件
- 如何通过串行端口接收 JPEG 图像
- 当使用GDI+创建时,两个具有相同维度的JPEG图像是否具有相同的标头
- 用c++将数组编码为jpeg图像
- 用于获取JPEG图像大小的C++库
- 如何在Qt的主窗口上完全显示jpeg图像
- 从JPEG图像中提取RGB,使用libjpeg c++库
- 使用c++在Qt中添加jpeg图像文件
- 如何从磁盘加载Jpeg图像并创建视频文件?Avi等),而无需在c++中使用opencv
- 使用boost::gil从内存中读取JPEG图像
- Linux CGI Web API -如何在c++下输出二进制JPEG图像
- 解码JPEG图像的快速方法
- 用于将JPEG图像转换为TIFF格式的C, c++或Objective-C代码
- 通过http GET请求接收JPEG图像
- opencv从缓冲区读取jpeg图像