【问题标题】:C# - RTP screen streamingC# - RTP 屏幕流式传输
【发布时间】:2017-12-09 18:31:31
【问题描述】:

我正在尝试制作一个远程桌面应用程序,用户可以通过网络应用程序控制他的电脑(如 logmein 中)。 我使用 C# 实现桌面部分,使用 NodeJS 实现 webapp,使用 Socket.IO 进行通信。

我的第一次尝试是捕获屏幕截图(仅 5 fps),然后将其与之前的屏幕截图进行比较,并仅发送 8 位图像颜色的差异,这导致了 800 * 600 分辨率的虚拟桌面 - 首先是 100kb图像,然后根据屏幕上的变化从 5kb 到 60Kb。

在我的本地机器控制虚拟机的情况下,一切都很完美,但是当我在线托管 webapp 时,结果是灾难性的,发生了不可能的延迟。

经过一些研究,发现这种应用程序无法以我的方式实现,我必须使用实时协议并在客户端屏幕上进行直播。

我的问题是:

  • 是否有现成可用的免费/开源 RTP 库?

  • 如何将实时流从桌面应用程序传输到 web 应用程序,因为它来自没有开放端口的客户端?我正在考虑另一个将在服务器上运行的桌面应用程序(托管 webapp),然后它将再次流式传输相同的内容,然后 webapp 可以通过使用 RTP 端口访问本地 ip 来简单地显示内容,但是这个不能解决从客户端到服务器传输实时流的奥秘吗?

【问题讨论】:

    标签: c# stream screen share rtp


    【解决方案1】:

    是否有现成可用的免费/开源 RTP 库?

    我将如何将实时流从桌面应用程序传输到网络应用程序 因为它来自没有开放端口的客户端?我曾是 考虑将在服务器上运行的另一个桌面应用程序(托管 webapp),然后它将再次流式传输相同的内容,然后 webapp 可以通过访问本地 ip 来简单地显示内容 与RTP端口,但这并不能解决传输的奥秘 从客户端到服务器的实时流式传输?

    这会很棘手。上面所有的库都遵循严格的 RTSP/RTP 规范,这需要在主机端打开一个监听端口,这无疑是在一个 nat'd 地址后面。我会坚持每一端都是客户并“向上”访问您的网络服务。您还需要保证帧的交付(因为您交付增量增量),因此 RTP(传统上通过 UDP)将具有挑战性。

    一些想法

    说到底,RTP 只是一个标准化的 12 字节标头和压缩媒体的打包规则。这对延迟没有帮助。真正的好处是允许您以符合标准的方式连接到端点,例如使用VLC 客户端。

    您可以调整您的套接字,这会有所帮助,但老实说,我要关注的是压缩和屏幕捕获效率。你使用什么图像压缩? VNC 传统上使用 zlib 和其他一些有损文件,如 jpeg。这些框架越小越好。

    还有另一个可能有所帮助的想法 - 微软有一个用于获取“脏屏幕区域”的 API。它被称为Desktop Duplication API,它的执行速度非常快。但是它是 Win8 及更高版本。

    一切顺利!

    【讨论】:

    • 非常感谢您的回答,不过我有一些问题,当您说 我会坚持让每一端都成为客户并“向上”访问您的网络服务。 ,您是指捕获到达网络服务的屏幕截图的客户端吗?所以没有RTP?根据您评论的第二部分,RTP 并没有真正的帮助,延迟并没有什么特别之处,对吧?所以我可能会坚持我目前的方法并专注于压缩/屏幕截图? (待跟进)
    • 目前我正在手动截取屏幕截图,因为我已经读过 DPA 不支持 Win7 我相信,而且我没有使用任何压缩方法,因为我尝试了 zlib 并且压缩时间太长,我尝试了lz4net,速度超级快,但结果不太令人满意(60kb图像变成50kb),你怎么看?
    • 我忘了说我当前的截图执行时间是~.05s 编辑:截屏的整个过程,检查当前和上一个截图之间的差异并保存差异位图需要~.1s到 ~.13s ,我相信有点过分了,我会试试 DDA
    • 我的意思是你的应用程序的每一端(发送者和查看者)都可以连接到一些在公共服务器上运行的服务。这不是必需的,这只是一个不必担心打开侦听套接字并担心您的公共寻址的想法。您可以保持点对点,但您的服务器地址必须众所周知且可访问。
    • zlib 很慢,但它应该能够为您提供至少 10fps,可能更多取决于区域的大小。 JPEG 压缩会更快更小。例如,VNC 使用 zlib 和 jpeg。
    猜你喜欢
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 2017-03-29
    • 2011-10-08
    相关资源
    最近更新 更多