【问题标题】:C# capture desktop video and send through networkC#捕获桌面视频并通过网络发送
【发布时间】:2019-07-17 07:26:32
【问题描述】:

我正在寻找一种捕获当前桌面视图的方法(或者选择单个窗口进行捕获也可以)。我找到了很多将视频文件流式传输或将桌面捕获到视频文件的方法,但没有关于我的主题,即根本没有文件。

主要思想取自 Skype 的桌面演示,该演示将用户桌面的视频和声音流提供给另一个用户,甚至提供给群聊中的多个用户。所以我正在寻找类似的库(如果甚至存在类似的库),或者至少有一个关于如何做到这一点的方向。生成的程序应该能够流式传输给喜欢的 1-4 个用户。如果在转换过程中丢失了一些数据包(即短连接丢失),则另一个要求是能够赶上流。

C++ 解决方案也可以,但如果 C# 不那么复杂,则更好。提前致谢。

更新:.NET 桌面应用程序,而不是 asp.net 或 .NET 核心

【问题讨论】:

    标签: c# networking audio video stream


    【解决方案1】:

    自己编写代码(粘贴在一起)

    1. Capture screenshot of active window?
    2. 带有 SignalR 的 ASP .NET Core 应用程序:https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr-typescript-webpack?view=aspnetcore-2.2&tabs=visual-studio
    3. 取而代之的是 ChatHub 板条箱,例如ImageStreamHub (2 方法 Start(); Stop(); )
    4. Start() - 开始循环截图并通过网络套接字发送 (等待 Clients.All.SendAsync("imageReceived", image);)
    5. Stop() - 你猜对了,会终止循环

    替代方案: 看这个: https://docs.microsoft.com/en-us/aspnet/core/signalr/streaming?view=aspnetcore-2.2

    而不是发送数字,而是发送图像

    【讨论】:

    • 它不是 asp.net 核心,它是默认的 .net 桌面应用程序。本来想抓图,但是怎么跟声音同步呢?
    • 嗯...我不知道如何在 .net 中流式传输点对点,所以您需要某种服务器(可以在本地运行)...所以我建议使用一些用于捕获视频+音频的代码/库(在您编写的原始问题中,您找到了一些用于捕获带音频的视频的解决方案)将其发送到服务器,然后客户端可以从服务器订阅该流
    • 是的,但是该解决方案会捕获到 .avi 文件之类的文件,因此问题是将这些捕获到内存中。点对点不是强制性的,服务器在这里很好。
    • 你有那个解决方案的链接吗?
    • 嗯...在他们的示例项目中使用的 AviWriter 类有 2 个构造函数,一个接受文件名,另一个接受 System.IO.Stream 所以你基本上完成了,只需从该流中发送字节
    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 2016-03-24
    • 2015-11-08
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2015-09-08
    相关资源
    最近更新 更多