为wxWidgets设计实时视频流

时间:2010-10-11 18:19:22

标签: c++ client-server video-streaming

在我的应用程序中,我们将从交通摄像头向客户端查看器呈现视频流。 (最终是几个客户端观众。)客户端应该能够观看实时视频回放视频并观看包含视频流之前发生的视频的早期视频。我们打算使用wxWidgets来观看视频,我们可能会使用wxMediaCtrl。

现在,从上述陈述中,有些人可能会想“嘿,他不知道他在说什么。”你会是对的!我是这些概念的新手,我对信息过剩感到困惑。 上述陈述是否合理?任何人都可以为此推荐基本的服务器/客户端架构吗?我们肯定会在GUI中使用C ++ wxWidgets,但也许wxMediaCtrl不是我想要的......我应该直接使用类似ffmpeg库的东西吗? / p>

我们目前的方法似乎不太理想。服务器从每个视频帧中提取位图,然后等待单个客户端发送“下一帧”消息,此时服务器发送位图。实际上,我们重新创建了我们自己的笨拙,非标准,低效,低功能的视频流协议和查看器。必须有更好的东西!

4 个答案:

答案 0 :(得分:0)

您可以修改您的软件:

服务器连接,服务器抓取图像,将其传递给ffmpeg建立流,然后从ffmpeg流复制编码数据并通过网络发送到客户端,如果连接断开,则关闭ffmpeg流。

也许您可以使用以下内容来实现自己的优势:

http://www.kirsle.net/blog.html?u=kirsle&id=63

答案 1 :(得分:0)

有一个名为VLC的玩家。它有一个c ++库,您可以使用它将播放器嵌入到GUI应用程序中。它支持各种协议。因此,您应该将连接,检索和播放作业留给VLC,并仅处理启动和停止作业。这比自己做的更容易,也可能是更好的解决方案。

答案 2 :(得分:0)

您应该查看此C ++ RTMP服务器:http://www.rtmpd.com/。我很快下载,编译并成功测试它,没有任何实际问题(在Ubuntu Maverick上)。如果有点到处都可以获得相当好的文档。我怀疑,一旦你有一个能够支持典型协议的流媒体服务器(rtmpd似乎这样做),那么写一个客户端应该自然而然地落到位,特别是如果你使用wxWidgets作为接口api。当然,在这里写起来很容易,从我起居室的舒适性来看,如果你的代码很深,那将是一个不同的故事:)

答案 3 :(得分:0)

对于音乐和音频的媒体播放设施,您可以查看GStream。谈到服务器,我认为Twisted(Python中的网络库)应该是不错的选择。着名的直播视频社交网站justin.tv基于Twisted。在这里,您可以阅读here的故事。另外,我也在Twisted上构建了一组用于流音频的服务器。他们可以同时在线为数千名听众提供服务。