在開發類似語音視頻聊天或視頻會議這樣的系統時,它們通常都包含一個測試音視頻設備的功能 -- 通過該測試,用戶可以選擇要使用的音視頻設備(對于程序內部而言,就是確定要使用設備的Index),就像QQ的語音測試向導和視頻設置。這里,我介紹一下如何使用OMCS來實現類似的功能,只需少量代碼即可搞定。先上測試程序運行起來后的截圖:
如果聲卡沒有安裝,或設備無效,會給出相應的提示,就像下面這樣:
1.實現思路
(1)由于OMCS是基于網絡的語音視頻框架,是標準的C/S結構,所以必須要有服務端的存在。
(2)雖然OMCS服務端可以部署在有網絡連接的任何地方,但是,為了方便起見,我們直接在測試程序中集成它(只需要new一個MultimediaServer對象就OK)。
(3)以隨便一個ID(如“tester”)作為OMCS客戶端用戶,連接到集成的服務端。然后,使用OMCS提供的連接器連接自己的攝像頭、麥克風,便可看到效果。
(4)程序啟動時,我們可以使用OMCS工具類,來枚舉所有的攝像頭設備、麥克風設備、揚聲器設備,并檢測聲卡是否安裝。
2.具體實現
(1)初始化OMCS服務器
private MultimediaServer multimediaServer; ... OMCSConfiguration configuration = new OMCSConfiguration(10, 1, EncodingQuality.High, 16000, 800, 600); this.multimediaServer = new MultimediaServer(9000, new DefaultUserVerifier(), configuration, false, null);
(2)枚舉音視頻設備
//獲取攝像頭列表 IList<CameraInformation> cameras = Camera.GetCameras(); this.comboBox1.DataSource = cameras; if (cameras.Count > 0) { this.comboBox1.SelectedIndex = 0; } //獲取麥克風列表 IList<MicrophoneInformation> microphones = SoundDevice.GetMicrophones(); this.comboBox2.DataSource = microphones; if (microphones.Count > 0) { this.comboBox2.SelectedIndex = 0; } //獲取揚聲器列表 IList<SpeakerInformation> speakers = SoundDevice.GetSpeakers(); this.comboBox3.DataSource = speakers; if (speakers.Count > 0) { this.comboBox3.SelectedIndex = 0; }
(3)點擊開始按鈕,測試設備
if (!SoundDevice.IsSoundCardInstalled()) { this.label_error3.Visible = true; this.label_error3.Text = "聲卡沒有安裝"; } //初始化多媒體管理器 this.multimediaManager.CameraDeviceIndex = this.comboBox1.SelectedIndex; this.multimediaManager.MicrophoneDeviceIndex = this.comboBox2.SelectedIndex; this.multimediaManager.SpeakerIndex = this.comboBox3.SelectedIndex; this.multimediaManager.ChannelMode = ChannelMode.P2PDisabled; this.multimediaManager.CameraVideoSize = new System.Drawing.Size(320, 240); this.multimediaManager.Initialize("tester", "", "127.0.0.1", 9000); //與OMCS服務器建立連接,并登錄 //嘗試連接設備 this.cameraConnector1.BeginConnect("tester"); this.microphoneConnector1.BeginConnect("tester");
根據用戶選擇的設備索引,設置設備管理器的CameraDeviceIndex、MicrophoneDeviceIndex、SpeakerIndex 屬性,初始化管理器之后,使用連接器對象(cameraConnector1、microphoneConnector1)連接自己的攝像頭和麥克風。
如果一切正常,窗口將會顯示攝像頭采集到的視頻,揚聲器將會播放麥克風采集到的聲音。
3.測試程序
源碼下載。
文章列表