Socket收到MJPEG视频数据包,如何查找FFD8和FFD9?
Socket接收到的视频数据包,都存储到source.txt文件中,
然后读这个文件,找FFD8和FFD9之间的数据,写入dest.jpg文件中;
下面的算法不知道是否正确,查看dest.jpg文件看到不清楚。。。。
//保存接收到的MJPEG流数据包
char Dest[3000]; //存储接收到的数据包
nRet=0; //接收到的数据包长度
FILE* fp; //写文件
fp= fopen("source.txt", "wb");
while(1 == bFlag)
{
nRet = recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);
if(nRet>0)
{
Dest[nRet]=0; //添加结束标记
}
if (NULL != fp)
{
fwrite(Dest, nRet,1, fp);
}
Sleep(1);
} //while(1 == bFlag)
fclose(fp);
//从文本文件中读FFD8和FFD9之间的数据,保存到一张图片中
#define MAX_SIZE 1024*500
void CIPVideoDlg::OnButton5()
{
unsigned char chBuf[MAX_SIZE] = {0};
unsigned char chBegin[2] = {0xFF,0xD8};
unsigned char chEnd[2] = {0xFF,0xD9};
int iLen = 0;
int iBegin = 0;
int iEnd = 0;
FILE* fp = fopen("source.txt", "rb+"); //读写方式打开二进制文件
if (fp != NULL)
{
fseek(fp, 0, SEEK_END); //文件指针定向到文件结尾
iLen = ftell(fp); //获取文件长度
fseek(fp, 0, SEEK_SET); //定位到文件开始位置
fread(chBuf, 1, iLen, fp);
int ioffset = 0; //偏移量,一次移动两个字节
while (1)
{
//查找 FF D8
if (!memcmp(chBuf+ioffset, chBegin, 2))
{
iBegin = ioffset;
}
//查找 FF D9
if (!memcmp(chBuf+ioffset, chEnd, 2))
{
iEnd = ioffset;
break;
}
ioffset += 2;
}
}
fclose(fp);
fp = fopen("dest.jpg", "wb");
if (NULL != fp)
{
fwrite(chBuf+iBegin, iEnd-iBegin+2,1, fp);
}
fclose(fp);
}
Socket收到MJPEG视频数据包,如何查找FFD8和FFD9?相关推荐
- vlc-android对于通过Live555接收到音视频数据包后的处理分析
转载地址:https://blog.csdn.net/c_m_deng/article/details/8487456 通过ndk-gdb跟踪调试vlc-android来分析从连接到RTSP服务器并接 ...
- SOCKET通信中TCP数据包大小的确定
MSS(maximun segment size) 最大分段大小,TCP有一个最大分段大小,用于通告对端每个分段中能发送的最大TCP数据量.MSS的目的是告诉对端其重组缓冲区大小的实际 ...
- 使用 WinSCP 连接到 VCSA 6.5 失败并显示以下错误:收到的 SFTP 数据包过大
Symptoms 使用 WinSCP 连接到 vCenter Server Virtual Appliance 会出现类似以下内容的错误: Cause 由于vcsa默认的root账号shell环境是/ ...
- 【FFMPEG】基于RTP的H264视频数据打包解包类
最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现 ...
- 交换机工作原理,收到一个数据包后交换机是如何处理的(实验加抓包详细了解)
感受集线器 在基础课程里面了解过集线器的原理,那会没有太多的去做实验,这里我们使用eNSP来做一个实验,正好支持HUB这个设备. 这里使用192.168.255.1去ping 192.168.255. ...
- tcpdump使用详解及数据包分析
tcpdump使用与数据分析 语法 tcpdump(选项) 选项 -A 以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: ...
- 数据包从物理网卡流经 Open vSwitch 进入 OpenStack 云主机的流程
目录 文章目录 目录 前言 数据包从物理网卡进入虚拟机的流程 物理网卡处理 如何将网卡收到的数据写入到内核内存? 中断下半部分软中断处理 数据包在内核态 OvS Bridge(Datapath)中的处 ...
- tcpdump 网络数据包分析工具
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
- 自定义Udp/Tcp协议,通信协议Socket/WebSocket,IM粘包、分包解决等(2),ProtocolBuffer
> 自定义Udp/Tcp协议/通信协议(Java/C):自定义构建和解析IM协议消息:IM自定义UDP通信协议 类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成 ...
最新文章
- 征文 | “‘互联网+’背景下大数据与税收征管的深度融合研究” 专题征文启事...
- 86. Leetcode 264. 丑数 II (动态规划-基础题)
- python numpy ufunc.reduce(self, a, axis=0, dtype=None, out=None, keepdims=False)函数.(连续执行原始运算对值聚合)
- explain分析执行计划
- 关于报错:'nvidia-smi' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 权限管理数据表设计说明
- Python——常见数据类型的调试笔记(“如何通过Debug信息判断数据类型”)
- 基于Java毕业设计幼儿园教育管理信息系统演示2021源码+系统+mysql+lw文档+部署软件
- 应用统计学学什么科目_统计学考研初试都要考哪些科目?
- react项目里添加支持less(无webpack.config.js如何设置
- 行严格对角占优矩阵——一道矩阵代数作业题
- 直流电机参数术语中英文对照及解释
- 计算机组成原理实验报告JMPR,计算机组成原理实验四:组合逻辑控制器部件教学实验...
- 【数字图像处理】实验一 图像的平移,缩放和旋转(vs2017+opencv)
- C语言 内存管理的细枝末节
- mysql基础----基本命令与13道练习
- Java (过河卒)
- Element UI select 下拉框样式覆盖
- 2014年八大信息安全峰会演讲PPT下载
- 第四轮学科计算机科学,电子科学与技术排名:教育部第四轮学科测评完整版