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协议一般,比较可靠的通信协议往往包含有以下几个组成 ...
最新文章
- linux强制删除文件夹命令 rm -rf
- Google开源OCR项目Tesseract训练(自己训练的记录,未成功)
- ssm把图片保存到项目中_项目中的图片跨域问题解决方式
- 使用 Spring Boot 快速构建 Spring 框架应用--转
- 60-400-240-使用-binlog-Canal使用文档md
- HashMap的底层原理 cr:csdn:zhangshixi
- 软件测试的金字塔体系--从1个中心到5个要素
- swift中闭包的循环引用
- ASsd固态测试软件数据,128G固态硬盘各项测试数据评测报告
- 数值计算实验1 Matlab基础实验
- 迪杰斯特拉算法(dijkstra)
- 机械键盘无冲测试软件,全键无冲/六键无冲可切换 键盘测试_狼派 X09暗影机械键盘_键鼠评测-中关村在线...
- java 货币符号_java使用Currency类获得指定国家的货币符号
- 易经64卦富含的人生哲理
- USACO 2022 US Open Contest, Bronze
- 微软文件共享服务器进程,Windows Server“8”– 将服务器应用程序存储转移到 Windows 文件共享...
- 火柴人小程序linux,推荐这3款射击类的火柴人小程序,一起冲冲冲吧!
- 学会Zbrush硬表面建模,造出属于自己的机甲模型
- 发现一款好用的在线项目管理工具(有免费版)
- 支持Tasker控制的app合集
热门文章
- VUE Element UI 父组件调用子组件方法变量,子组件使用父组件变量
- 湖南大学超级计算机中心 舒教授,史上最年轻的博士生导师兼教授诞生了,任职湖南大学,颜值还超高...
- 医学影像学对计算机要求大吗,医学影像学专业和医学影像技术学有什么区别?...
- MSSQL·查询T-SQL执行记录
- 最全面的行人重识别数据集汇总
- 微信小程序canvas绘制圆角矩形
- 梦幻诛仙key的存储过程语句
- 青岛二中高考2021成绩查询,青岛二中2018高考成绩
- 什么是意志动词和无意志动词
- 系统检测到您正在使用网页抓取工具访问_SEO优化:搜索引擎蜘蛛抓取异常,原来是这个原因!...