OMCS Demo -- 支持双摄像头

     在一些软件系统中,可能需要在客户端使用双摄像头,下面我们以一个简单的例子来说明OMCS如何支持双摄像头的。

     我们假设一个场景:在1对1的网络在线培训系统中,在学生端需要使用两个摄像头,一个摄像头对着学生的作业本,另一个摄像头对着学生的脸。这样,老师在上课时,就可以同时观看学生的面部表情以及学生在作业本上的具体解题过程,以实现全方位的教育指导。

一.Demo运行效果   

     根据以上的场景描述,我们知道,客户端可以分为两种类型:学生端、老师端。  

      demo简单的学生端的运行效果如下图所示:      

     

      老师端的运行 效果如下:   

      

二.客户端具体实现

1.学生端实现

OMCS原初的设计是在一个时刻只能使用一个摄像头的,而且,因为OMCS客户端框架内部的多媒体管理器IMultimediaManager使用的是单例模式(Singleton)。

这意味着框架内部使用的是最后创建的那个IMultimediaManager实例(通过MultimediaManagerFactory的GetSingleton方法)。

现在,学生端需要支持同时使用两个摄像头,那我们就要想个解决方案。最终我们采用的方案是:在学生端的进程内登录两个帐号,每个帐号对应一个IMultimediaManager实例,每个IMultimediaManager实例对应一个摄像头。代码实现如下所示:

     private void InitializeOMCS4TwoCameras(string userID, string password, string serverIP, int serverPort)
        {
            //先初始化第二个摄像头
            this.multimediaManagerSecond = MultimediaManagerFactory.GetSingleton();
            this.multimediaManagerSecond.CameraDeviceIndex = 1;
            this.multimediaManagerSecond.Advanced.DontUseAudioDevice = true;
            this.multimediaManagerSecond.Initialize(userID + "_2", password, serverIP, serverPort);

            //主OMCS客户端实例,使用第一个摄像头
            this.multimediaManagerMain = MultimediaManagerFactory.GetSingleton(true);
            this.multimediaManagerMain.CameraDeviceIndex = 0;
            this.multimediaManagerMain.Initialize(userID, password, serverIP, serverPort);
        }    

注意:

(1)我们假设第一个摄像头为主摄像头,第二个摄像头为副摄像头。

(2)一定要先初始化第二个副摄像头对应的IMultimediaManager,再初始化主摄像头对应的IMultimediaManager

(3)这样,OMCS框架内部就会使用后面创建的这个IMultimediaManager。

(4)副摄像头对应的登录帐号,采用的是原帐号加上后缀“_2”的形式。

2.老师端实现

      在了解了学生端的实现方案后,老师端的实现就很容易了。只需要使用两个CameraConnector分别连到学生的主帐号和副帐号即可。

     public Form1()
        {
            InitializeComponent();
            this.multimediaManager = MultimediaManagerFactory.GetSingleton();
            this.multimediaManager.CameraDeviceIndex = 0;
            AccessController access = new AccessController();
            this.multimediaManager.Initialize("tea01", "", "127.0.0.1", 9900);
            this.multimediaManager.AccessController = access;
            this.cameraConnector1.ConnectEnded += CameraConnector1_ConnectEnded;
            this.cameraConnector2.ConnectEnded += CameraConnector2_ConnectEnded;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.ConnectStudent("stu01");
        }

        private void ConnectStudent(string studentUserID)
        {
            this.cameraConnector1.BeginConnect(studentUserID);//连接到学生的主帐号对应的摄像头
            this.cameraConnector2.BeginConnect(studentUserID+ "_2");//连接到学生的副帐号对应的摄像头
        }

三.服务端实现

       注意,为了演示方便,此Demo的服务端是集成在学生端里面的,所以需要等学生端运行后,再启动老师端。

四.源码下载

     OMCS_DoubleCamera.rar

--------------------------------------------------------------------------------------------------------  

下载免费版本的OMCS以及 demo源码

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

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

联系我们

立即咨询 

站内搜索

ESFramework 通信框架

价目表

详细说明

SDK与Demo下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

价目表

详细说明

SDK与Demo下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

价目表

详细说明

客户端下载

OVCS 视频会议系统

详细说明

源码下载

傲瑞实用组件

价目表

SDK下载

NPusher 推流组件

NPuller   拉流组件

MCapture 语音视频采集组件

MFile 语音视频录制组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

StriveEngine 轻量级的通信引擎

傲瑞组件 FAQ

授权

授权流程

产品选购指南

授权方案说明

授权SDK使用说明

其它

支持国产OS、国产CPU、国产DB

SDK使用技巧

联系我们