我想创建一个像Skype中现有的音频/视频设置窗口, 允许用户选择呼叫中使用的设备并对其进行测试, 现在我有两个问题:|
我使用Microsoft Expression Encoder找到了#1的解决方案如下:
var vidDevices = EncoderDevices.FindDevices(EncoderDeviceType.Video);
var audDevices = EncoderDevices.FindDevices(EncoderDeviceType.Audio);
这需要添加Microsoft Expression Encoder,这将增加我们程序的大小,我认为应该有一种本地方式与音频/视频设备进行通信,而无需外部库。
答案 0 :(得分:1)
第1部分。这对.NET来说非常重要。您需要与Direct Show和COM集成才能执行此操作,或者可能使用某些WMI查询。然而,这是一个巨大的痛苦的屁股。 @Sheridan提供的文档是一个很好的起点。另外一条建议,还有像libvlc和gstreamer这样的其他框架可以为你做这类事情。您可以尝试查看gstreamer的dshowvideosrc
和dshowaudiosrc
代码,并查看所需的确切直接显示代码。
第2部分。您可能需要自己实现。您可能会对显示器部件感到幸运,因为可能有一个directx过滤器,您可以将其插入到媒体图中,以便为您处理繁重的工作。观看相机并不是太糟糕,您只需要一个窗口手柄即可传递到媒体图。一旦建立了媒体图,播放音频同样容易。
我知道这似乎不是一个很好的答案,但这不是我们可以通过这种媒介给你一个完整的解决方案。您有两个选择,学习DirectX,DShow和COM。或者,找到一个好的框架来抽象所有这些,例如gstreamer或libvlc。