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以及 demo源码

阅读 更多OMCS开发手册系列文章

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

联系我们

站内搜索

OrayTalk 企业即时通讯系统

傲瑞通官网

详细说明

客户端下载

OrayMeeting 视频会议系统

详细说明

客户端下载

ESFramework 通信框架

详细说明

SDK与Demo下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK与Demo下载

OMCS FAQ

版本变更记录

OVCS 视频会议Demo

详细说明

源码下载

傲瑞实用组件

SDK下载

H5Media 纯网页音视频交互

NPusher 推流组件

MCapture 语音视频采集组件

MFile 语音视频录制组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

StriveEngine 轻量级的通信引擎

傲瑞组件 FAQ

授权

授权流程

产品选购指南

授权方案说明

授权SDK使用说明

其它

支持信创国产化

SDK使用技巧

联系我们