【问题标题】:Custom Video and Audio Settings自定义视频和音频设置
【发布时间】:2014-03-24 07:49:25
【问题描述】:

我想制作一个类似于 Skype 中现有的音频/视频设置窗口, 允许用户选择通话中使用的设备并对其进行测试, 现在我有两个问题:|

  1. 如何获取可用的音频/视频设备。
  2. 我想测试这些设备如下:
    • 麦克风:根据输入语音显示一个条形(与 Skype 音频设置相同)。
    • 摄像头:查看所选摄像头的预览(与 Skype 设置相同)。
    • 扬声器:播放音频文件的按钮。

我使用 Microsoft Expression Encoder 找到了#1 的一些解决方案,如下所示:

        var vidDevices = EncoderDevices.FindDevices(EncoderDeviceType.Video);
        var audDevices = EncoderDevices.FindDevices(EncoderDeviceType.Audio);

这需要添加微软表达式编码器,这将增加我们程序的大小,我认为应该有一种本地方式来与音频/视频设备进行通信,而不需要外部库。

【问题讨论】:

  • @Sheridan 感谢这对问题 #1 有帮助,那么 #2 呢?
  • Anas,这不是一个你可以来请人为你做你的工作的网站...我为你提供了一个可以用来回答您自己的第二点的资源链接的数量。正确的做法是实际尝试实现您的要求,然后回到这里并提出一个新的具体问题,如果您在实现一个您要求的特定部分。
  • 在我看来堆栈溢出是一个分享知识和帮助人们的地方,所以如果有人遇到这种情况,他可以提供帮助,否则他不必寻找答案,我如何回答问题其他用户。
  • 我的评论不是在告诉您我的意见...它是在告诉您有关本网站的规则和规定,如堆栈溢出Help Center。您可以选择是否遵循那里给出的建议。由于大多数人确实遵循这些准则,您会发现我的评论实际上是很好的建议,旨在为您的特定问题找到答案。我的观点是,当您不尝试自己并且不遵守规则时,没有人会回答您的问题。但是,如果您认为自己最了解,这取决于您。

标签: c# wpf audio camera


【解决方案1】:

第 1 部分。这是 .NET 的重要内容。您需要与 Direct Show 和 COM 集成来执行此操作,或者可能使用一些 WMI 查询。然而,这是一个巨大的痛苦。 @Sheridan 提供的文档是一个很好的起点。另一条建议是,还有其他框架,例如 libvlc 和 gstreamer,可以为您做这种事情。您可以尝试查看 gstreamer 的 dshowvideosrcdshowaudiosrc 代码,并查看您需要的确切直接显示代码。

第 2 部分。您可能必须自己实现它。您可能会在显示部分很幸运,因为可能有一个 directx 过滤器,您可以将其插入到您的媒体图表中,它将为您处理繁重的工作。摄像头的查看效果还不错,您只需要一个窗口句柄即可传递给媒体图。构建媒体图后,播放音频同样容易。

我知道这似乎不是一个很好的答案,但这不是我们可以通过这种媒介为您提供完整解决方案的东西。你有两个选择,学习 DirectX、DShow 和 COM。或者,找到一个很好的框架,将所有这些抽象出来,例如 gstreamer 或 libvlc。

【讨论】:

  • 非常感谢您的回答非常有帮助,我对 .Net 中的设备没有经验,我曾经使用 10 行代码在 Flash 中完成这些任务,现在还添加了简单的方法来完成 HTML5 草稿这个,我认为 .Net 有一个现成的函数可以简单地枚举设备并从中获取输入,这是我认为的框架中缺乏的。
猜你喜欢
  • 1970-01-01
  • 2021-12-16
  • 2012-03-17
  • 2017-12-31
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多