jjzjj

c++ - Windows 上的远程音响系统

coder 2024-06-15 原文

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

4 天前关闭。




Improve this question




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

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

微软有 3 种不同的选择,而不是使用虚拟 channel 的 RDP

  • 在这台电脑上玩
  • 不玩
  • 在远程系统中播放

  • 对于那个 microft 正在使用 RdpendP.dll 和虚拟 chanel 来控制这三个差异。选项..

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

    我们的方法:

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

    问题:
  • 第一个问题是如何将声音从终端服务器重定向到客户端(这样,当一个媒体播放器在终端服务器上播放时,它应该在客户端系统上播放)。我们尝试使用 WASAPIS 从终端服务器端点设备扬声器中捕获声音并使用 WTSVirtualWrite将音频数据写入虚拟 channel ,然后在客户端我们使用 getbuffer 方法来渲染它,以写入客户端端点设备,但我认为这是非常糟糕的方法,并且会出现巨大的延迟。
    因此,如果我们将在终端服务器端播放的声音重定向到客户端音频设备,那么我们在这里的想法而不是捕获和渲染,这将是更好的方法,但是如何使用虚拟 channel 和终端服务器 API 或任何其他 Windows API 进行这些实现..
    应该为此做哪些注册表更改...
  • 第二个问题是如何将虚拟扬声器图标添加到音量混合设备扬声器(一个组合框将出现在设备扬声器上,这里我们将有两个不同的扬声器图标及其属性,一个是支持的 HDRealtalk,第二个是我们的扬声器仅限扬声器属性)

  • 注意:这里不是编写虚拟音频驱动程序或我们自己的audiodrv,而是如何实现。
  • 第三个问题是如何支持我们自己的编解码器(如verbois)...
    (这里我们创建了一个 .acm 文件,但如何支持它,我们经历了不同的 ACM 功能,如 ACMDriverAdd、ACMDrvClose、ACMOpen,但我们不知道如何实现它)...
  • 第四个问题是如何从麦克风捕获并渲染到客户端系统(例如从终端服务器麦克风捕获到本地捕获设备并在那里播放)...

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

    最佳答案

    为此,您始终可以使用 icecast。只需要一些脚本和 edcast 就可以了。

    其他选项包括 Mumble。

    关于c++ - Windows 上的远程音响系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134614/

    有关c++ - Windows 上的远程音响系统的更多相关文章

    1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

      我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

    2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

      我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

    3. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

      我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

    4. ruby-on-rails - openshift 上的 rails 控制台 - 2

      我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

    5. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

      我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

    6. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

      这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

    7. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

        电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

    8. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

      在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

    9. ruby - 使用 `+=` 和 `send` 方法 - 2

      如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

    10. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

      之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

    随机推荐