首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

通过TCP Socket发送图片,然后显示出来,为什么一顿一顿的?解决办法

2012-02-25 
通过TCP Socket发送图片,然后显示出来,为什么一顿一顿的?RT。通过TCP Socket发送48张连续图片,这些图片我是

通过TCP Socket发送图片,然后显示出来,为什么一顿一顿的?
RT。 

通过TCP Socket发送48张连续图片,这些图片我是从一个小视屏一帧一帧截下来的。然后在接收端,我用GDI+的 OleLoadPicture函数获取接受到的内存内容,用render方法显示出来。整个过程都能显示出来,但是为什么一顿一顿的呢。不流畅。有一段超级快,就像快播一样,然后就卡一下,卡个好几秒钟,然后又快速的显示完。

那么,请教怎么控制传输的速度,怎么解决这个问题。

[解决办法]
多线程,显示时不能停止接收
[解决办法]
你没有做缓冲处理,当然不行。

首先,你先定义缓冲时间,比如500毫秒。也就是说,从A点到B点,至少要经过500毫秒的缓冲。然后你需要在每一帧图像上打时间戳。

B点收到图像,也不着急显示,而是要等到其从缓冲区弹出。你最好定义一个传输窗口,这个窗口大小为小于500毫秒的数据,数据不必按照顺序传输,而是在窗口内的帧都可以传输,接收也不分先后,到了B点再排序,如果某帧错过了时间窗口,就不必传了。

也就是说,在你的显示端和采集端之间存在一个缓冲区间,这样才能平滑地显示。

[解决办法]
接收端做缓存
达到一定数量了再按预定的帧率显示

热点排行