自定义视频和音频设置

时间:2014-03-24 07:49:25

标签: c# wpf audio camera

我想创建一个像Skype中现有的音频/视频设置窗口, 允许用户选择呼叫中使用的设备并对其进行测试, 现在我有两个问题:|

  1. 如何获取音频/视频设备。
  2. 我想测试这些设备如下:
    • 麦克风:根据输入语音显示条形图(与Skype音频设置相同)。
    • 相机:查看所选相机的预览(与Skype设置相同)。
    • 扬声器:播放音频文件的按钮。
  3. 我使用Microsoft Expression Encoder找到了#1的解决方案如下:

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

    这需要添加Microsoft Expression Encoder,这将增加我们程序的大小,我认为应该有一种本地方式与音频/视频设备进行通信,而无需外部库。

1 个答案:

答案 0 :(得分:1)

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

第2部分。您可能需要自己实现。您可能会对显示器部件感到幸运,因为可能有一个directx过滤器,您可以将其插入到媒体图中,以便为您处理繁重的工作。观看相机并不是太糟糕,您只需要一个窗口手柄即可传递到媒体图。一旦建立了媒体图,播放音频同样容易。

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