OMCS Demo -- 摄像头、麦克风、扬声器 测试程序(附源码)
在开发类似语音视频聊天或视频会议这样的系统时,它们通常都包含一个测试音视频设备的功能 -- 通过该测试,用户可以选择要使用的音视频设备(对于程序内部而言,就是确定要使用设备的Index),就像QQ的语音测试向导和视频设置。这里,我们介绍如何使用OMCS来实现类似的功能,只需少量代码即可搞定。先看看测试程序运行起来后的截图:
如果声卡没有安装,或设备无效,会给出相应的提示,就像下面这样:
1.实现思路
(1)由于OMCS是基于网络的语音视频框架,是标准的C/S结构,所以必须要有服务端的存在。
(2)虽然OMCS服务端可以部署在有网络连接的任何地方,但是,为了方便起见,我们直接在测试程序中集成它(只需要new一个MultimediaServer对象就OK)。
(3)以随便一个ID(如“tester”)作为OMCS客户端用户,连接到集成的服务端。然后,使用OMCS提供的连接器连接自己的摄像头、麦克风,便可看到效果。
(4)当然,前面我们可以使用OMCS工具类,来枚举所有的摄像头设备、麦克风设备、扬声器设备,并检测声卡是否安装。(详细说明)
注:如果是在正式的基于OMCS开发的系统中实现类似QQ语音视频测试向导的功能,那么,就不必在当前程序中集成OMCS服务端了,直接使用系统中的OMCS服务器即可。
2.具体实现
(1)初始化OMCS服务器
private IMultimediaServer multimediaServer; ... this.multimediaServer = MultimediaServerFactory.CreateMultimediaServer(9100, new DefaultUserVerifier(),false,null);
(2)枚举音视频设备
//获取摄像头列表 IList<CameraInformation> cameras = Camera.GetCameras(); this.ComboBox_camera.ItemsSource = cameras; if (cameras.Count > 0) { this.ComboBox_camera.SelectedIndex = 0; } //获取麦克风列表 IList<MicrophoneInformation> microphones = SoundDevice.GetMicrophones(); this.ComboBox_mic.ItemsSource = microphones; if (microphones.Count > 0) { this.ComboBox_mic.SelectedIndex = 0; } //获取扬声器列表 IList<SpeakerInformation> speakers = SoundDevice.GetSpeakers(); this.ComboBox_speaker.ItemsSource = speakers; if (speakers.Count > 0) { this.ComboBox_speaker.SelectedIndex = 0; }
(3)点击开始按钮,测试设备
if (!SoundDevice.IsSoundCardInstalled()) { this.speaker_error.Visibility = Visibility.Visible; this.speaker_error.Content = "声卡没有安装"; } //初始化多媒体管理器 CameraCapability cameraCapability = (CameraCapability)this.ComboBox_capability.SelectedItem; this.multimediaManager.CameraDeviceIndex = this.ComboBox_camera.SelectedIndex; this.multimediaManager.MicrophoneDeviceIndex = this.ComboBox_mic.SelectedIndex; this.multimediaManager.SpeakerIndex = this.ComboBox_speaker.SelectedIndex; this.multimediaManager.ChannelMode = ChannelMode.P2PDisabled; this.multimediaManager.CameraVideoSize = cameraCapability == null ? new System.Drawing.Size(320, 240) : cameraCapability.VideoSize; this.multimediaManager.Initialize("tester", "", "127.0.0.1", 9100);//与OMCS服务器建立连接,并登录 this.Cursor = Cursors.Wait; this.label_info.Visibility = Visibility.Visible; //尝试连接设备 this.microphoneConnector.BeginConnect("tester"); if (!this.cameraInvalid) { this.dynamicCameraConnector.BeginConnect("tester"); }
根据用户选择的设备索引,设置设备管理器的CameraDeviceIndex、MicrophoneDeviceIndex、SpeakerIndex 属性,初始化管理器之后,使用连接器对象(dynamicCameraConnector、microphoneConnector)连接自己的摄像头和麦克风。
如果一切正常,窗口将会显示摄像头采集到的视频,扬声器将会播放麦克风采集到的声音。
3.测试程序
源码下载。
相关内容:语音视频设备详解
-----------------------------------------------------------------------------------------------------------------
阅读 更多OMCS开发手册系列文章。
Q Q:168757008