我已经通过RTP流从ip camera收到了动作jpeg帧,我尝试将帧转换为有效的jpg图像。我的相机型号是Secubest PXN-0512P。它通过RTP流组播运动jpeg数据的视频。现在,我已经解码了RTP流并获得了内存中的每个帧,我尝试将其转换为有效的jpg图像。
你知道这样的工具来完成这个功能吗?处理m-jpeg框架的步骤是什么? (例如添加jpeg-header,huffman表)。我是这个领域的新手。
我用C ++语言编写它。
非常感谢。
更新1 我尝试直接将收到的帧数据写入jpg,当我在ubuntu打开它时,它显示警告“错误解释JPEG图像文件(不是JPEG文件:以0x00 0x00开头)”。然后我向它添加一个JFIF标题,它显示警告“错误解释JPEG图像文件(不支持的标记类型0xf0”)。 Jpeg_header是
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_bytes = 2;
m_FileStream.write(mem_buffer.pData+skip_bytes, mem_buffer.DataSize-skip_bytes);
我怎么能解决它?非常感谢你!
答案 0 :(得分:1)
从原始数据或其他来源创建JPEG的最快方法是使用JPEG组自己创建的libjpeg C库。
答案 1 :(得分:1)
JPEG图像根据RFC 2435 "RTP Payload Format for JPEG-compressed Video"分为几部分。您需要按照此C#库/方法将部件合并回有效的JPEG:Saving JPEG file coming from Network Camera RTP Stream