文章出處

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

    源碼下載 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()