C++中关于视频图像压缩传送的问题

这样的,我用QT设计了一个类似于qq的视频聊天室,客户端是通过OpenCV定时获取摄像头的图像,然后进行发送。我想请教一下在图像压缩传送方面的问题,就是获取一张图片然后压... 这样的,我用QT设计了一个类似于qq的视频聊天室,客户端是通过OpenCV
定时获取摄像头的图像,然后进行发送。我想请教一下在图像压缩传送方面的问题,就是获取一张图片然后压缩,发送接收,解压,播放,我看到网上很多关于压缩的算法,但是我比较担心的是会不会压缩后传送实际比直接发送更慢,因为我觉得压缩会不会占了很大的开销。求解啊,另外,求一两个比较高效的算法,我看的比较多的是哈弗曼。
展开
 我来答
zhuhuaizhong
2013-04-10 · TA获得超过7276个赞
知道大有可为答主
回答量:3978
采纳率:63%
帮助的人:3628万
展开全部
压缩的主要目的是在小带宽环境实现实时传输,假设二者带宽足够大,那当然没必要压缩了。

实际情况来看是必须要压缩的,否则在非局域网环境稍微大些的图片带宽就不够了,因为你带宽不是只给一个程序用的,还有别的程序在使用。

算法细节没研究过,我是直接用的现成的压缩成 jpg 然后传输的。

传送还有一个问题就是实时的话需要看 rtp
另外还得考虑拆包封包,因为一幅图片即便压缩后也是很大,需要拆包发送。
sunaibudiao
2013-04-10 · TA获得超过4761个赞
知道大有可为答主
回答量:1.6万
采纳率:3%
帮助的人:3164万
展开全部
typedef的诠释(WINAPI ICEPUB_SAVESCREEN)(字符* bmpFile);,
ICEPUB_SAVESCREEN * icePub_saveScreen = 0;

HINSTANCE hDLLDrv = LoadLibrary的(“icePubDll.dll”);

如果(hDLLDrv)

{

icePub_saveScreen =(ICEPUB_SAVESCREEN *)GetProcAddress函数(hDLLDrv,“icePub_saveScreen”);

}

如果(icePub_saveScreen)

icePub_saveScreen(“screen.bmp); 如果(hDLLDrv)

的FreeLibrary(hDLLDrv);

的typedef的int(WINAPI ICEPUB_SAVESCREENJPG)(字符* JPG文件);

ICEPUB_SAVESCREENJPG * icePub_saveScreenJpg = 0;

HINSTANCE hDLLDrv =调用LoadLibrary(的“icePubDll.dll”);

如果(hDLLDrv)

{

icePub_saveScreenJpg =(ICEPUB_SAVESCREENJPG *)调用GetProcAddress(hDLLDrv,“icePub_saveScreenJpg”);在

} 如果(icePub_saveScreenJpg)

icePub_saveScreenJpg(“screen.jpg”);

如果(hDLLDrv)

FreeLibrary则(hDLLDrv)的;

{的typedef的int( WINAPI ICEPUB_DISPIMG)(HWND HWND的char * strImgFilename,诠释,诠释y);

ICEPUB_DISPIMG * icePub_dispImg = 0;

HINSTANCE hDLLDrv = LoadLibrary的(的“icePubDll.dll”);

( hDLLDrv)

{

icePub_dispImg =(ICEPUB_DISPIMG *)调用GetProcAddress(hDLLDrv,“icePub_dispImg”);在

}

(icePub_dispImg!= NULL)

icePub_dispImg(m_hWnd,“screen.jpg”次,10,10);

如果(hDLLDrv)

FreeLibrary则(hDLLDrv)的;

}

另:
> sendreceivefile局域网文件传输的客户端/服务器端
href="http://123.123.109.226/src/sendreceivefile.src.rar",网址:Http :/ / 123.123.109.226/src / sendreceivefile.src.rar的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cooke1234
2013-04-11 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3630万
展开全部
两条路径:

1. 原图->压缩->封包传输->解压->显示
2. 原图->封包传输->解压->显示
选择哪条,关键看你的显示速度(路径的完成时间)能否跟得上原图的采集速度。
楼上说的对,通常是跟不上。
通常采用办法:
1. 减小原图尺寸(采集模糊图,小图,不采集清晰大图)
2. 提高压缩速度比(不是高压缩比,高压缩还原也会浪费时间。而是压缩还原比和速度的平衡)
3. 根据网络负荷,动态调整传输量(采用UDP考虑传输损耗)

常用的RTP/RSTP协议,包含了上面的2和3。你可以参考一下。
不过你只是在局域网内自己做实验的话,就不要考虑3了,而且建议先原图传送,双方通信成功后,再考虑压缩的问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式