C++中关于视频图像压缩传送的问题
这样的,我用QT设计了一个类似于qq的视频聊天室,客户端是通过OpenCV定时获取摄像头的图像,然后进行发送。我想请教一下在图像压缩传送方面的问题,就是获取一张图片然后压...
这样的,我用QT设计了一个类似于qq的视频聊天室,客户端是通过OpenCV
定时获取摄像头的图像,然后进行发送。我想请教一下在图像压缩传送方面的问题,就是获取一张图片然后压缩,发送接收,解压,播放,我看到网上很多关于压缩的算法,但是我比较担心的是会不会压缩后传送实际比直接发送更慢,因为我觉得压缩会不会占了很大的开销。求解啊,另外,求一两个比较高效的算法,我看的比较多的是哈弗曼。 展开
定时获取摄像头的图像,然后进行发送。我想请教一下在图像压缩传送方面的问题,就是获取一张图片然后压缩,发送接收,解压,播放,我看到网上很多关于压缩的算法,但是我比较担心的是会不会压缩后传送实际比直接发送更慢,因为我觉得压缩会不会占了很大的开销。求解啊,另外,求一两个比较高效的算法,我看的比较多的是哈弗曼。 展开
3个回答
展开全部
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的
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的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两条路径:
1. 原图->压缩->封包传输->解压->显示
2. 原图->封包传输->解压->显示
选择哪条,关键看你的显示速度(路径的完成时间)能否跟得上原图的采集速度。
楼上说的对,通常是跟不上。
通常采用办法:
1. 减小原图尺寸(采集模糊图,小图,不采集清晰大图)
2. 提高压缩速度比(不是高压缩比,高压缩还原也会浪费时间。而是压缩还原比和速度的平衡)
3. 根据网络负荷,动态调整传输量(采用UDP考虑传输损耗)
常用的RTP/RSTP协议,包含了上面的2和3。你可以参考一下。
不过你只是在局域网内自己做实验的话,就不要考虑3了,而且建议先原图传送,双方通信成功后,再考虑压缩的问题。
1. 原图->压缩->封包传输->解压->显示
2. 原图->封包传输->解压->显示
选择哪条,关键看你的显示速度(路径的完成时间)能否跟得上原图的采集速度。
楼上说的对,通常是跟不上。
通常采用办法:
1. 减小原图尺寸(采集模糊图,小图,不采集清晰大图)
2. 提高压缩速度比(不是高压缩比,高压缩还原也会浪费时间。而是压缩还原比和速度的平衡)
3. 根据网络负荷,动态调整传输量(采用UDP考虑传输损耗)
常用的RTP/RSTP协议,包含了上面的2和3。你可以参考一下。
不过你只是在局域网内自己做实验的话,就不要考虑3了,而且建议先原图传送,双方通信成功后,再考虑压缩的问题。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询