C#-RTP屏幕流媒体

C#-RTP屏幕流媒体,c#,stream,screen,share,rtp,C#,Stream,Screen,Share,Rtp,我正在尝试制作一个远程桌面应用程序,用户可以通过网络应用程序(如logmein)控制他的电脑。 我用C#作为桌面部分,用NodeJS作为Web应用程序,通过Socket.IO实现了通信 我的第一次尝试是捕获屏幕截图(仅5 fps),然后将其与前一个屏幕截图进行比较,并仅发送8位图像颜色的差异,这导致在100kb的第一个图像中显示800*600分辨率的虚拟桌面,然后根据屏幕上的变化从5kb到60Kb 我的本地机器控制着一个virtualbox,一切都很完美,但当我在线托管webapp时,结果是灾难

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

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

我的本地机器控制着一个virtualbox,一切都很完美,但当我在线托管webapp时,结果是灾难性的,一个不可能的延迟正在发生

经过几次研究,我发现这种应用程序不可能以我的方式实现,我必须使用实时协议,在客户端屏幕上进行实时流媒体播放

我的问题是:

  • 是否有任何免费/开源RTP库可以使用

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

是否有任何免费/开源RTP库可以使用

    我已经用过了,而且很好,但是C++,所以你必须互操作。
  • -也是需要互操作的本机
  • 我没有使用过,但它是完全管理的
我如何将直播从桌面应用程序传输到网络应用程序 因为它来自没有开放端口的客户端?我是 考虑另一个将在服务器上运行的桌面应用程序(托管) 然后它将再次流式传输相同的内容,然后 webapp只需加入本地ip即可显示内容 使用RTP端口,但这并不能解决传输的秘密 从客户端到服务器的实时流媒体

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

一些想法

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

你可以调整你的套接字,这将有点帮助,但老实说,我将重点放在压缩和屏幕捕获效率上。您使用的是什么图像压缩?VNC传统上使用zlib和其他一些有损图像,如jpeg。帧越小越好

另外一个想法可能会有所帮助-微软有一个API来获取“脏屏幕区域”。它被称为,它的执行速度令人难以置信。然而,它是Win8及以上版本

祝你一切顺利

是否有任何免费/开源RTP库可以使用

    我已经用过了,而且很好,但是C++,所以你必须互操作。
  • -也是需要互操作的本机
  • 我没有使用过,但它是完全管理的
我如何将直播从桌面应用程序传输到网络应用程序 因为它来自没有开放端口的客户端?我是 考虑另一个将在服务器上运行的桌面应用程序(托管) 然后它将再次流式传输相同的内容,然后 webapp只需加入本地ip即可显示内容 使用RTP端口,但这并不能解决传输的秘密 从客户端到服务器的实时流媒体

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

一些想法

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

你可以调整你的套接字,这将有点帮助,但老实说,我将重点放在压缩和屏幕捕获效率上。您使用的是什么图像压缩?VNC传统上使用zlib和其他一些有损图像,如jpeg。帧越小越好

另外一个想法可能会有所帮助-微软有一个API来获取“脏屏幕区域”。它被称为,它的执行速度令人难以置信。然而,它是Win8及以上版本


祝你一切顺利

非常感谢你的回答,不过我有一些问题,当你说我会坚持每一端都是一个客户,接触到你的Web服务,你是说正在抓拍到达Web服务的屏幕截图的客户端吗?所以没有RTP?根据你评论的第二部分,RTP并没有真正的帮助,它的延迟并没有什么特别之处,对吧?所以我最好还是保持机智