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