攝像頭、麥克風、揚聲器測試程式(附原始碼)

zhuweisky發表於2013-08-20

在開發類似語音視訊聊天或視訊會議這樣的系統時,它們通常都包含一個測試音視訊裝置的功能 -- 通過該測試,使用者可以選擇要使用的音視訊裝置(對於程式內部而言,就是確定要使用裝置的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.測試程式

    原始碼下載 

相關文章