【问题标题】:Remote sound system on windows [closed]Windows上的远程音响系统[关闭]
【发布时间】:2011-09-02 08:08:59
【问题描述】:

我们的要求是开发远程音响系统,它应该支持从WindowsXP 开始的所有windows 操作系统。 类似于http://www.elusiva.com/products/RemoteSound/

我想在这里更清楚地描述功能......

微软有 3 个使用虚拟通道的 RDP 选项

  1. 在这台电脑上玩

  2. 不要玩

  3. 在远程系统中播放

因为 microft 使用 RdpendP.dll 和 virtual chanel 来控制这三个差异。选项..

当一个用户选择在远程系统中播放选项时,我们的情况正好与微软相反,该选项应该在本地系统而不是远程系统中播放..使用我们自己注册的虚拟频道。其次,当用户选择“在这台计算机上播放”选项时,应该在远程系统上播放而不是在本地系统上播放,延迟低...

我们的方法:

我们刚刚创建了一个虚拟客户端 dll 并在 (HCURRENT_USER/Software/Microsoft/Terminal Server Client/Default/Addin) 注册。现在我们可以使用终端服务器创建一个虚拟通道。

问题:

  1. 第一个问题是如何将声音从终端服务器重定向到客户端(这样当一个媒体播放器在终端服务器播放时,它应该在客户端系统播放)。我们尝试使用 WASAPIS 从终端服务器捕获声音端点设备扬声器并使用 WTSVirtualWrite 将音频数据写入虚拟通道,然后在客户端我们使用 getbuffer 方法来渲染它来写入客户端端点设备,但我认为这是非常糟糕的方法,并且会出现巨大的延迟。 因此,如果我们将在终端服务器端播放的声音重定向到客户端音频设备,我们在这里的想法而不是捕获和渲染,这将是更好的方法,但是如何使用虚拟通道和终端服务器 API 或任何其他 Windows API 来执行这些实现.. 应该为此做哪些注册表更改...

  2. 第二个问题是如何向音量 Mixture 设备扬声器添加一个虚拟扬声器图标(设备扬声器会出现一个组合框,这里我们将有两个不同的扬声器图标及其属性,一个是支持的 HDRealtalk 和第二个是我们的扬声器,只有一般的扬声器属性)

注意:这里不是编写虚拟音频驱动程序或我们自己的audiodrv,而是如何实现。

  1. 第三个问题是如何支持我们自己的编解码器(如verbois)... (这里我们创建了一个 .acm 文件,但如何支持它,我们已经完成了 diff.ACM 功能,如 ACMDriverAdd、ACMDrvClose、ACMOpen,但我们不知道如何实现)...

  2. 第四个问题是如何从麦克风捕获和渲染到客户端系统(比如从终端服务器麦克风捕获到本地捕获设备并在那里播放)......

我们的要求是从 Window XP 开始的所有 Windows 操作系统都应该支持它。

【问题讨论】:

  • 您绝对需要使用 RDP dll 来制作远程音响系统吗?如果遇到问题,还有其他方法可以实现,例如打开本地声音流并通过网络连接进行流式传输。
  • 是的,是的,它不是强制使用 RDP dll。但我需要解释如何在没有 RDP dll 的情况下实现这一点。请告诉我其他方法。我想要一些 Elusiva 产品。elusiva.com/products/RemoteSound跨度>
  • 在 C++ 方面有更多经验的人可以为您提供帮助。但正如我所说,这可以通过 1)在声音设备(例如声音输出/microhpone)上打开流 2)连接到网络主机/客户端来完成。 3) 缓冲声音流并通过网络逐位发送。您必须确保声音流畅并设计处理延迟的方法。看看像 Mumble/Murmur 这样的开源软件。它可能会给你一些好主意。

标签: c++ windows winapi mfc


【解决方案1】:

你总是可以为此使用 icecast。只需要一些脚本和 edcast 就可以了。

其他选项包括 Mumble。

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    相关资源
    最近更新 更多