gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:48 31 4
gpt4 key购买 nike

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

你知道这样的工具来完成这个功能吗?处理 m-jpeg 帧的步骤是什么? (例如添加 jpeg-header、huffman 表)。我是这个领域的新程序员。

我用 C++ 语言编写它。

非常感谢。

更新 1我尝试直接将接收到的帧数据写入 jpg,当我在 ubuntu 上打开它时,它显示警告“解释 JPEG 图像文件时出错(不是 JPEG 文件:以 0x00 0x00 开头)”。然后我向它添加一个 JFIF header ,它显示警告“解释 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);

我该如何解决?非常感谢!

最佳答案

JPEG 图像根据 RFC 2435 "RTP Payload Format for JPEG-compressed Video" 分成几部分.您需要按照此 C# 库/方法将部件合并回有效的 JPEG:Saving JPEG file coming from Network Camera RTP Stream

关于c++ - 如何将运动 jpeg 帧从 ip 摄像机(rtp 流)转换为有效的 jpg 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24552617/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com