HOWTO:实现从http读取并显示图像?

听海拉拉 2010-08-26 11:57:44
HOWTO:实现从http读取并显示图像?
Hi ALL,
比如有一个web site http://127.0.0.1:8080/?action=stream&ignored.mjpg。要从上面读取jpeg的图像,并显示出来。
而且不断的读取,成视频流。
用c++怎么实现呢?或者MFC也行。
谢谢
...全文
434 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
东岸西乡 2012-08-15
  • 打赏
  • 举报
回复
lz,不知道你解决这个问题没有?我也是在研究这个,想跟你探讨一下
听海拉拉 2010-09-28
  • 打赏
  • 举报
回复
怎么帮我结贴了,我还没有给分呢
听海拉拉 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 liyan 的回复:]

帮不上你太多,过三十之后,都不太深入看代码了。
不过,有相关的东西,我一定会发给你的,我有几个在上海的朋友,也在搞这个,不过这几年联系的不太多了不知道进展如何了。
多联系!
[/Quote]
我现在在用omap3530开发板来做一个类似IP camera的东东。比较茫然。底层到应用,都一起做,累累
听海拉拉 2010-09-07
  • 打赏
  • 举报
回复
好的,谢谢
liyan 2010-09-05
  • 打赏
  • 举报
回复
帮不上你太多,过三十之后,都不太深入看代码了。
不过,有相关的东西,我一定会发给你的,我有几个在上海的朋友,也在搞这个,不过这几年联系的不太多了不知道进展如何了。
多联系!
liyan 2010-09-04
  • 打赏
  • 举报
回复
对了,你可以玩一下,PP还是什么来着的服务端插件类库,开放的,UNIX下应该可以编译通过的。
这样,你再编写一个客户端,不是比这么玩有意思么,反正都是玩。
至于单帧显示这个路子,还不如你搞一个流媒体服务器。
比如,你可以看一下helix这样,客户端,你用IE,不用编客户端程序了,客用机用IE访问
哈哈。你可以编几个漂亮的INTNAT程序。
也是不错的玩法。
强烈建议!
反正以前我玩过,不过是在WIN环境下!
而且很快出手,因为没有太多时间。
现在有时间,倒没心思写东西了。
还是那句话,强烈建议用UNIX+HELIX很容易上手的,有网页编程基础的,不考虑安全问题一天出东西!
liyan 2010-09-04
  • 打赏
  • 举报
回复
嗯!!
这个么,感觉!
作实验可以,应用还有有距离!
很好玩,思路不实用,但很简朴!
或者用,真正专搞媒体编程的,没这么玩的。
还有,你没压缩!
JPG或是MJPG真的太大了,那个汗啊!
不过,局域局资源没问题,客户机资源没问题,那就整吧!
内存分配,别考虑了,这种编法,就是不在乎资源!
服务器,已经是UNIX了那没办法,实际,w2003+采集卡+直播系统才是王道!
这种东西很多,不过还是赞一下楼主的精神,DIY精神!
听海拉拉 2010-09-04
  • 打赏
  • 举报
回复
已经是jpeg的格式了,只是视频流处理,不知道怎么把内存非配好。jpeg流的单帧是否有明晰的数据结构呢
听海拉拉 2010-09-04
  • 打赏
  • 举报
回复
用在嵌入式开发板上
听海拉拉 2010-09-04
  • 打赏
  • 举报
回复
web端和客户端都要做。只是现在暂时拿mjpg streamer来研究一下。上面的代码就是客户端的一部分。很简单,就是连接视频服务器地址,之后读取图象
那个开源的mjpg streamer 的readme如下:
"MJPG-streamer", is a command line application that copied JPG-frame from a single input plugin to multiple output plugins. It can be used to stream JPEG files over an IP-based network from the webcam to a viewer like Firefox, Cambozola, Videolanclient or even to a Windows Mobile device running the TCPMP-Player.

It was written for embedded devices with very limited ressources in terms of RAM and CPU. Its origin, the "uvc_streamer" was written, because Linux-UVC compatible cameras directly produce JPEG-data, allowing fast and perfomant M-JPEG streams even from an embedded device running OpenWRT. The input module "input_uvc.so" captures such JPG frames from a connected webcam.

This tool can be modified and distributed according to the terms of the GPL v2.

Currently no issues are known, but since this software is quite young and not used widely it may cause problems. You must really know what you are doing, if you use this software. If you want to use the software you are obliged to check if the sourcecode does what you expect it to do and take the risk yourself to use it.

To view the stream use VLC or Firefox and open the URL:
http://127.0.0.1:8080/?action=stream

To view a single JPEG just call:
http://127.0.0.1:8080/?action=snapshot

To compile and start the tool:
# tar xzvf mjpg-streamer.tgz
# cd mjpg-streamer
# make clean all
# export LD_LIBRARY_PATH=.
# ./mjpg_streamer -o "output_http.so -w ./www"

More examples can be found in the start.sh bash script.

In case of error:
* the input plugin "input_uvc.so" depends on libjpeg, make sure it is installed.

Dependencies for the input plugin "input_uvc.so":
* libjpeg
* recent Linux-UVC driver (newer then revision #170)

Dependencies for the output plugin "output_autofocus.so":
* libmath


To play the HTTP M-JPEG stream with mplayer:
# mplayer -fps 30 -demuxer lavf "http://127.0.0.1:8080/?action=stream&ignored.mjpg"

It might be necessary to configure mplayer to prefer IPv4 instead of IPv6
# vi ~./mplayer/config
add or change the option: prefer-ipv4=yes
liyan 2010-09-03
  • 打赏
  • 举报
回复
楼上的好懒啊!
这里就有现成的源码。
http://abc19902009.download.csdn.net/这不是广告噢,csdn下载
至于楼主的,我建议参考一下这个吧!
即使要单帧,抓,也应该压缩后再传!
不然真的没什么意义了!
lijianli9 2010-09-02
  • 打赏
  • 举报
回复
期待现成的方案,
听海拉拉 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liyan 的回复:]
这个太累了吧!
没有压缩,你确定,你一秒钟能下载二十五个图片,并显示出来?
我知道你大概要做个视频会议什么的。但思路欠考虑!

还是建议你用现成的方案。
对了,你是要解决同步采集,同步播放的问题吧!是不是啊!
有方案的!不用直接传单帧的,资源开销太大了!
[/Quote]
现成的方案是什么,能不能提示一下
听海拉拉 2010-09-02
  • 打赏
  • 举报
回复
美妙30帧,可以的,流量大概是1M到2M这样子,在局域网足够了
听海拉拉 2010-09-02
  • 打赏
  • 举报
回复
其实已经解码了,服务器端是linux的,我了个客户端,在MFC下的,但是不是会有异常,估计是内存的问题
是内存还是什么问题,能显示图像,但有一异常,请帮忙修改。
char url[1000] = "http://192.168.131.129:8080/?action=snapshot";


//cout<<"目标地址 URL:"<<url<<endl;

/*
unsigned char *buffer;
void *pImageMemory;
*/
buffer=new BYTE[100000];


HINTERNET internet= InternetOpen("HTTP Downloader",INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL, NULL);

if( !internet )
return ;

HINTERNET file_handle = InternetOpenUrl(internet, url, NULL, 0, INTERNET_FLAG_RELOAD, 0);
if( !file_handle)
return ;

pImageMemory=GlobalLock(buffer);
BOOL b = InternetReadFile(file_handle,pImageMemory,100000,&bytes_read);
GlobalUnlock(pImageMemory); //解锁内存

if(!b)
return;

CDC* pDC = GetDlgItem(IDC_ShowImg) ->GetDC();
HDC hDC = pDC ->GetSafeHdc();
CRect rect;
GetDlgItem(IDC_ShowImg) ->GetClientRect( &rect );



IStream *pIStream;//创建一个IStream接口指针,用来保存图片流
IPicture *pIPicture;//创建一个IPicture接口指针,表示图片对象
CreateStreamOnHGlobal(pImageMemory, false, &pIStream); //用全局内存初使化IStream接口指针
OleLoadPicture(pIStream, 0, false, IID_IPicture, (LPVOID*)&(pIPicture));//用OleLoadPicture获得IPicture接

long hmWidth;
long hmHeight;

pIPicture->get_Width(&hmWidth); //用接口方法获得图片的宽和高
pIPicture->get_Height(&hmHeight);
pIPicture->Render(hDC,0,0,600,400,0,hmHeight,hmWidth,-hmHeight,NULL);



GlobalFree(pImageMemory); //释放全局内存
pIStream->Release(); //释放pIStream
pIPicture->Release(); //释放pIPicture

::DeleteDC(hDC);
pDC->DeleteDC();

InternetCloseHandle(internet);

CDialog::OnPaint();
liyan 2010-09-02
  • 打赏
  • 举报
回复
这个太累了吧!
没有压缩,你确定,你一秒钟能下载二十五个图片,并显示出来?
我知道你大概要做个视频会议什么的。但思路欠考虑!

还是建议你用现成的方案。
对了,你是要解决同步采集,同步播放的问题吧!是不是啊!
有方案的!不用直接传单帧的,资源开销太大了!
晓灬佩恩 2010-08-26
  • 打赏
  • 举报
回复
跟从本地读取差不多。边下载边播放。在接收端定义个缓冲区缓冲数据
fengrx 2010-08-26
  • 打赏
  • 举报
回复
拆分开:
1.下载。
2.显示。
内容概要:本文聚焦于“通过ADMM进行TV-L1去噪”的研究,系统阐述了基于交替方向乘子法(ADMM)实现总变差(Total Variation, TV)正则化与L1范数稀疏约束相结合的图像去噪模型。文中详细解析了TV-L1模型的数学构建及其在抑制椒盐噪声、保持图像边缘结构方面的优越性,重点介绍了ADMM算法如何将复杂的凸优化问题分解为多个可高效求解的子问题,提升收敛效率与数值稳定性。配套提供的Matlab代码实现了完整的去噪流程,便于读者复现算法并开展实验验证。此外,文档还整合了电力系统、信号处理、路径规划、机器学习等多个领域的科研资源,凸显其作为综合性学术资料包的价值。; 适合人群:具备良好数学基础与Matlab编程能力,从事图像处理、信号去噪、优化算法或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解并复现基于ADMM的TV-L1图像去噪算法;② 掌握总变差正则化与L1范数在稀疏噪声去除中的理论与应用;③ 利用所提供的Matlab代码进行算法调试、性能评估与二次开发;④ 借助附带的多领域科研案例拓展研究思路,推动跨学科技术创新。; 阅读建议:建议读者结合理论推导与Matlab代码实践,逐步跟踪ADMM的迭代过程,观察其收敛行为与去噪效果,同时可参考文档末尾提供的丰富科研资源链接,拓展技术视野与研究深度。
内容概要:本文档为一篇博士论文的复现资料,聚焦于计及锁相环频率耦合效应的光伏逆变器序阻抗解析建模与扫频稳定评估研究。基于Matlab编程与Simulink仿真平台,构建了包含锁相环动态特性的光伏并网逆变器正负序阻抗模型,深入剖析其在弱电网条件下因锁相环引发的频率耦合机制,并采用小信号扫频法进行阻抗特性辨识与系统稳定性分析。文档系统呈现了理论建模的数学推导过程、仿真模型搭建细节及核心代码实现,旨在完整复现并验证原论文的关键研究成果,帮助使用者掌握新能源发电系统接入弱电网时的小信号稳定性分析方法与技术路径。; 适合人群:具备电力电子、自动控制及电力系统稳定性相关基础知识,熟练掌握Matlab/Simulink仿真工具,从事新能源并网技术、微电网稳定性分析、逆变器控制策略研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解光伏逆变器序阻抗建模理论,特别是锁相环导致的正负序频率交叉耦合现象;② 掌握基于扫频法的阻抗测量与奈奎斯特稳定性判据应用,评估并网系统的稳定裕度;③ 复现高水平学术论文的核心成果,为自身科研项目提供可靠的理论依据、成熟的代码框架与仿真技术参考。; 阅读建议:学习者应结合所提供的Matlab代码与Simulink仿真模型,循序渐进地理解阻抗建模的理论推导与实现逻辑,重点在于动手调试扫频模块以获取精确的阻抗频率响应曲线,并通过调整控制器参数、电网强度等变量,观察其对系统阻抗特性与稳定性的影响,从而深化对理论知识的实践应用与创新能力。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧