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

How to convert motion jpeg frames from ip camera(rtp stream) to valid jpg image

本文关键字:转换 有效 图像 jpg rtp 运动 jpeg 帧从 摄像机 ip      更新时间:2023-10-16

我通过RTP流从ip摄像机接收到动态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 is

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);

我怎么解决它?非常感谢!

JPEG图像根据RFC 2435"RTP有效载荷格式用于JPEG压缩视频"被分成几个部分。您需要按照以下c#库/方法将部分合并回有效的JPEG:保存来自网络摄像机RTP流的JPEG文件

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