我正在寻找不同的解决方案来从监视器屏幕捕获视频流并将其发送到vidoestreaming服务器以在网络上广播。它必须在“现场”发生。
我不喜欢广泛使用像“procaster”这样的外部服务。
操作系统:Windows。
了解人们必须实现的想法和经验将会很棒。
谢谢大家。
答案 0 :(得分:2)
Windows SDK包含Push Source Filters Sample,后者又包含CPushSourceDesktop
过滤器/类。
CPushSourceDesktop:当前桌面图像的副本(仅限GDI)
它捕获桌面图像并将其推送到DirectShow管道。从那里开始,您可以使用视频压缩编解码器处理它并将其流式传输到远程位置。 Windows Media子系统包含一个体面的屏幕图像压缩编解码器,网络流将必须是自定义或第三方组件。或者,可以使捕获类成为虚拟摄像机,并使用Windows Media Encoder对其进行广播(或者,它已经内置了类似功能)。
或者,您可以检查VNC(或其中一个克隆)源代码,看看它如何挂钩窗口并捕获图像更新,然后压缩它们并使其可用于远程应用程序。
请注意,您必须专门捕获非GDI图像(例如来自视频/游戏应用程序,它们使用硬件加速和非RGB rffaces)。
答案 1 :(得分:2)
最近,我构建了一个名为ScreenStreamer的GoLang项目,是一个将当前活动窗口或全屏(Linux或Windows)流式传输到其他设备(如电话或其他PC)的工具,如通过http或FLV上的MJPEG rtmp,它非常实时(延迟<100ms)。它适用于Windows和Linux。
构建之后,您可以将其运行为:
scrollViewWillEndDragging
截图: