下载此文档

花屏和丢帧问题解决思路.doc


文档分类:办公文档 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
IP 摄像头播放 puter 当前版本 V 密级文档编号总页数正文页数附录页数编制人张占忠评审人鲁晓军批准人编制日期 评审日期批准日期修改履历序号状态版本修改内容修改位置修改人日期评审人日期批准人日期 1M 全文完成张占忠 2015/06/ 27 234567评阅意见状态: C—创建文档, A—增加内容, M—修改内容, D—删除内容摄像头问题总结本次做摄像头监控主要遇到的问题有 2个。 1:丢帧问题。协议采用的是基于 rtp 的 Udp 协议。 2:花屏问题。丢帧问题解决思路: 1:采取双线程机制。如果接收和解码在一个线程中,那么会遇到一个问题就是如果解码一个较大的帧,这时发送端发送 2个较小的帧。这时就只能保存一个帧,从而出现丢帧的问题。:2:发送端采取双线程增加缓冲区机制。缓冲区采用循环队列的方式。一个进程往缓冲区里面放数据,一个进程从缓冲区里面取数据并解码。具体实现参考接收端缓冲区。 3:接收端采取双线程增加缓冲区机制。缓冲区采用循环队列的方式。一个进程往缓冲区里面放数据,一个进程从缓冲区里面取数据并解码。每次接收到的 rtp 数据包为一帧 H264 数据。(注意,由于一些帧太大,可能会将帧分成若干包,我们需要将包重组为帧。) 设我们得到的一帧数据长度为 vsize , 得到的数据保存在 vdata 中。开辟一个全局数组作为缓冲区。假设缓冲区数组为 BufQue 。我们需要在数组中保存的内容为数据长度 vsize 和 vdata 。由于 H264 数据以字节为单位而 vsize 为 int 型,占据 4 个字节,需要采取一定措施将 int 型转化为 4个字节。方法如下: BufQue[head] = numcount & 0xff; //FirstBit; head = (head+1)%BUF_SZIE; BufQue[head] = (numcount>>8) & 0xff; //SecondBit; head = (head+1)%BUF_SZIE; BufQue[head] =(numcount>>16) & 0xff; head = (head+1)%BUF_SZIE; BufQue[head] = (numcount>>24) & 0xff; head = (head+1)%BUF_SZIE; BUF_SZIE 为缓冲区的大小。切记:由于缓冲区为循环队列,因此必须有求余操作。检查缓冲区代码是否正确与是否丢帧的思路: 缓冲区代码写好以后并不能立即确定缓冲区代码是否正确,并且由于是一帧帧的得到数据,用单步调试太过复杂繁琐并且一不错就得重新调试,并且由于码流在不停发送并不能确定是否丢帧。解决办法就是将调试信息写到文件中去。解决思路: First :发送端发送数据是发送一个时间戳,也就是帧发送的顺序。接受端接受到的数据也有一个时间戳,如果接收端接收到的时间戳不连续,即是丢帧。 Second :接收端接受到数据以后在将数据写入缓冲区以前将 H264 码流保存到文件中设该文件为 . Third :将从缓冲区里面读出来的数据也保存到文件中。设该文件为 Forth :用 VLC 播放器播放 . ,如果没有花屏则证明接收到的数据无误。如果播

花屏和丢帧问题解决思路 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人63229029
  • 文件大小63 KB
  • 时间2017-04-27