首页 文章

自定义视频和音频设置

提问于
浏览
1

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

  • 如何获得可用的音频/视频设备 .

  • 我想测试这些设备如下:

  • 麦克风:根据输入语音显示条形(与Skype音频设置相同) .

  • 摄像头:查看所选摄像头的预览(与Skype设置相同) .

  • 扬声器:播放音频文件的按钮 .

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

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

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

1 回答

  • 1

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

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

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

相关问题