【问题标题】:Designing live video stream for wxWidgets为 wxWidgets 设计实时视频流
【发布时间】:2023-03-09 11:06:02
【问题描述】:

在我的应用程序中,我们会将来自交通摄像头的视频流呈现给客户端查看器。 (最终还有多个客户端查看器。)客户端应该能够观看实时视频倒带视频并观看较早的镜头,包括在连接视频流之前发生的视频。我们打算使用 wxWidgets 来查看视频,在其中我们可能会使用 wxMediaCtrl。

现在,根据上述陈述,你们中的一些人可能会想“嘿,他不知道他在说什么。”你是对的!我对这些概念很陌生,我对信息过剩感到困惑。 以上说法合理吗?谁能为此推荐一个基本的服务器/客户端架构?我们肯定会使用 C++ wxWidgets 作为 GUI,但也许 wxMediaCtrl 不是我想要的......我应该直接使用 ffmpeg 库之类的东西吗?

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

【问题讨论】:

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


    【解决方案1】:

    您可以修改您的软件:

    服务端连接,服务端抓取一张图片,传给ffmpeg建立流,然后从ffmpeg流中复制编码数据通过网络发送给客户端,如果连接断开,关闭ffmpeg流。

    也许您可以利用以下优势:

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

    【讨论】:

      【解决方案2】:

      有一个玩家叫VLC。它有一个用于 c++ 的库,您可以使用它将播放器嵌入到您的 GUI 应用程序中。它支持非常广泛的协议。因此,您应该将连接、检索和播放作业留给 VLC,只处理启动和停止作业。这会比自己动手更容易,而且可能是更好的解决方案。

      【讨论】:

        【解决方案3】:

        您应该查看这个 C++ RTMP 服务器:http://www.rtmpd.com/。我快速下载、编译并成功测试了它,没有任何实际问题(在 Ubuntu Maverick 上)。如果到处都有,文档就很好了。我怀疑一旦你有一个能够支持典型协议的流媒体服务器(rtmpd 似乎就是这样做的),那么编写客户端应该自然而然地到位,特别是如果你使用 wxWidgets 作为接口 api。当然,在这里写起来很容易,在我舒适的客厅里,当你沉浸在代码中时,情况就完全不同了:)

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2016-06-17
            • 2011-03-24
            • 1970-01-01
            • 2012-12-18
            • 2012-01-22
            • 2016-07-12
            • 2017-07-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多