Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将运动jpeg帧从ip摄像机(rtp流)转换为有效的jpg图像_C++_Jpeg_Compression_Mjpeg - Fatal编程技术网

C++ 如何将运动jpeg帧从ip摄像机(rtp流)转换为有效的jpg图像

C++ 如何将运动jpeg帧从ip摄像机(rtp流)转换为有效的jpg图像,c++,jpeg,compression,mjpeg,C++,Jpeg,Compression,Mjpeg,我已经通过RTP流从ip摄像机接收到了运动jpeg帧,我试图将这些帧转换成有效的jpg图像。我的相机型号是Secubest PXN-0512P。它通过RTP流对运动jpeg数据的视频进行组播。现在,我已经解码了RTP流,并在内存中获得了每个帧,我尝试将其转换为有效的jpg图像 您知道完成此功能需要多少工具吗?处理m-jpeg帧的步骤是什么?(如添加jpeg头、哈夫曼表)。我是这个领域的新程序员 我用C++语言编程。< /P> 多谢各位 更新1 我试图直接将接收到的帧数据写入jpg,当我在ubun

我已经通过RTP流从ip摄像机接收到了运动jpeg帧,我试图将这些帧转换成有效的jpg图像。我的相机型号是Secubest PXN-0512P。它通过RTP流对运动jpeg数据的视频进行组播。现在,我已经解码了RTP流,并在内存中获得了每个帧,我尝试将其转换为有效的jpg图像

您知道完成此功能需要多少工具吗?处理m-jpeg帧的步骤是什么?(如添加jpeg头、哈夫曼表)。我是这个领域的新程序员

<>我用C++语言编程。< /P> 多谢各位

更新1
我试图直接将接收到的帧数据写入jpg,当我在ubuntu打开它时,它会显示警告“错误解释JPEG图像文件(不是JPEG文件:以0x00 0x00开始)”。然后我向它添加一个JFIF头,它显示警告“错误解释JPEG图像文件(不支持的标记类型0xf0)”。 Jpeg_头是

char jpg_header1[] = {
        0xff, 0xd8,                          // SOI
        0xff, 0xe0,                          // APP0
        0x00, 0x10,                          // APP0 Hdr size
        0x4a, 0x46, 0x49, 0x46, 0x00, // ID string
        0x01, 0x01,                          // Version
        0x00,                               // Bits per type
        0x00, 0x00,                         // X density
        0x00, 0x00,                         // Y density
        0x00,                               // X Thumbnail size
        0x00                                // Y Thumbnail size
        };
我的代码是

m_FileStream.write(jpg_header1,sizeof(jpg_header1));
int skip_字节=2;
m_FileStream.write(mem_buffer.pData+skip_bytes,mem_buffer.DataSize-skip_bytes);


我该怎么解决呢?非常感谢!

从原始数据或其他来源创建JPEG的最快方法是使用JPEG组自己创建的C库。

JPEG图像根据分解为多个部分。您需要按照以下C库/方法将部分合并回有效的JPEG:

mjpeg帧与JPEG类似image,我应该解压帧数据,然后将其压缩为jpg图像吗?我应该对行帧数据进行一些预处理吗?非常感谢!@user3801316 per,每个帧都已经是jpg了,所以如果将帧按原样写入文件,应该有一个jpgI尝试直接将接收到的帧数据写入jpg,当我在ubuntu打开它时,它会显示警告“错误解释JPEG图像文件(不是JPEG文件:以0x00 0x00开头)”。然后我向其中添加JFIF头,它显示警告“错误解释JPEG图像文件(不支持的标记类型0xf0)。我的代码是'm_FileStream.write(jpg_header1,sizeof(jpg_header1));int skip_bytes=2;m_FileStream.write(mem_buffer.pData+skip_bytes,mem_buffer.DataSize-skip_bytes);“听起来你的格式有问题。远程调试有点困难。恐怕libjpeg有将jpeg正确写入文件的功能。