OMCS开发手册(03) -- 多媒体服务器

前面我们已经详细介绍了基于OMCS开发网络多媒体应用的客户端程序所必需掌握的内容,现在我们来看一下OMCS服务端的开发。对于使用者而言,OMCS的服务端就非常简单了,只要实现一个用户验证的接口,挂接到OMCS框架上,就可以了。OMCS多媒体服务器的主要职责有:

(1)统一管理多媒体设备的某些公共配置参数。

(2)管理所有在线的OMCS客户端。

(3)协助OMCS客户端之间建立P2P通道。

(4)在OMCS客户端之间转发信息。

一.MultimediaServer类

OMCS服务端的核心类是OMCS.Server.MultimediaServer,它将OMCS多媒体服务端的各个组件装配起来,构成一个整体运行。在二次开发时,我们只要正确地实例化MultimediaServer,然后将其宿留任何形式的应用程序中(像WinForm、Windows服务、甚至控制台程序等)即可。所以,作为OMCS使用者,我们只需要关心它的构造函数:

  public MultimediaServer(int port, IUserVerifier userVerifier, OMCSConfiguration config, bool securityLogEnabled, string platformServerIPE)

port 参数用于指定当前OMCS服务器通过哪个端口提供服务(使用TCP协议)。

userVerifier 用于验证登录的客户端的帐号密码。如果客户端提交的帐号密码不正确,多媒体设备管理器IMultimediaManager的Initialize方法将抛出异常。OMCS服务端开发唯一需要做的就是实现这个接口。

securityLogEnabled 参数用于指定是否记录安全日志,一般在调试程序的时候,将其设为true,而正式发布运行时,将其设为false。

platformServerIPE 用于设定OMCS群集平台服务器的地址,在非群集的OMCS系统中,我们可以先忽略它,直接传入null。

MultimediaServer类的构造函数中最关键的参数是OMCSConfiguration,我们将在下面详细讨论。

二.OMCS多媒体服务器配置参数

OMCSConfiguration是多媒体服务器的最关键配置,其类图如下所示:

(1)音频:WaveSampleRate 用于设定麦克风的采样率(8k/16K/32K),默认值我为16000。AudioEncodingQuality 用于设定音频数据的编码质量(Low/Middle/High),默认值为High。

(2)视频:CameraFramerate 用于设定摄像头的采集帧频(1~25),默认值为5。

(3)远程桌面:DesktopFramerate 用于设定远程桌面的采集帧频(1~25),默认值为5。

(4)电子白板:WhiteboardWidth和WhiteboardHeight用于设定电子白板的尺寸(比如800*600,具体取值需要综合考虑所有guest的屏幕大小)。

电子白板的尺寸用于限制其可操作区域,超出区域之外的地方,是不能进行绘图操作的。

(5)SystemToken 用于区分不同的基于OMCS开发的系统,并隔离它们。

OMCS的客户端也能设置SystemToken,如果客户端与服务端的SystemToken的值不一致,则客户端就无法成功登录到OMCS服务端。

OMCSConfiguration 对四种多媒体设备都有对应的参数设置,在客户端的多媒体设备管理器初始化之前,多媒体管理器会先从服务器获取OMCSConfiguration对象,然后再根据其设定的值初始化本地的各个多媒体设备。

三.默认的多媒体服务器

如果不需要用户验证,可以直接使用OMCS提供的默认的多媒体服务器OMCS.Server.exe(文末将提供其可执行程序和源码的下载):

(1)使用IUserVerifier接口的默认实现类DefaultUserVerifier,其VerifyUser方法始终返回true。

(2)SystemToken的值为""。

如果需要验证用户帐号密码,或设定SystemToken,则可以将源码修改一下,实现IUserVerifier接口,并替换DefaultUserVerifier,然后重新发布。

(3)OMCSConfiguration其它项的设置可以在配置文件OMCS.Server.exe.config中进行修改。

<configuration>
  <appSettings>

    <!--服务器监听的端口-->
    <add key="Port" value="9900"/>
    <!--主窗体上是否显示用户列表。对于高并发应用,建议关闭该显示-->
    <add key="ShowUserList" value="true"/>
    <!--是否记录安全日志文件 Omcs.txt-->
    <add key="SecurityLogEnabled" value="false"/>
    <!--UserID的最大长度-->
    <add key="MaxLengthOfUserID" value="11"/>

    <!--摄像头采集视频的帧率-->
    <add key="CameraFramerate" value="6"/>
    <!--音频编码质量,Low/Middle/High。-->
    <add key="AudioQuality" value="High"/>
    <!--音频采样率,8000,16000,32000。-->
    <add key="WaveSampleRate" value="16000"/>
    <!--桌面帧率-->
    <add key="DesktopFramerate" value="1"/>
    <!--白板宽度-->
    <add key="WhiteboardWidth" value="800"/>
    <!--白板高度-->
    <add key="WhiteboardHeight" value="600"/>  

  </appSettings>
</configuration>

配置文件中除了可以设置OMCSConfiguration相关项外,还有其它几个设置项:

(1)Port 用于指定当前OMCS服务器通过哪个TCP端口提供服务。【将被传入MultimediaServer类的构造函数】

(2)ShowUserList 用于控制采用默认的UI主界面时,是否显示在线用户列表。

一般,只有在调试和测试阶段,我们才会开启显示用户列表。因为,当在线用户数很多时,窗体实时刷新每个用户的状态数据,其消耗CPU是不可忽视的。

(3)SecurityLogEnabled 用于指定是否记录安全日志。【将被传入MultimediaServer类的构造函数】

(4)MaxLengthOfUserID 用于设定客户端登录帐号的最大长度,默认值为11,如果所需长度大于这个值,必需重新设定。

而且,客户端的设定必须同服务器一致,OMCS客户端可以通过调用GlobalUtil类的静态方法SetMaxLengthOfUserID来设定该值。

默认的OMCS.Server.exe以WinForm的形式宿留了MultimediaServer对象。其运行起来后,如下图所示:

界面上显示了所有在线的用户列表,以及服务器相关的状态信息。

注意:OMCS多媒体服务器使用了两个端口,一个是通过MultimediaServer的构造参数指定的TCP端口,另一个是自动绑定的UDP端口(默认为TCP端口号加1)。

UDP端口是OMCS多媒体服务器内部集成的P2P服务器所使用的,用于协助客户端之间创建P2P通道。

OMCS.Server.exe有对应的配置文件OMCS.Server.exe.config,我们可以通过修改该配置文件来设定一些参数信息。

四.下载

OMCS多媒体服务器(带源码)

就基于OMCS进行二次开发而言,在我们掌握了概述、多媒体设备管理器、多媒体连接器、多媒体服务器这些内容后,就已经足够了。后面我们会介绍使用OMCS的更多技巧,以及给出更多的demo来演示如何基于OMCS开发网络多媒体应用系统。

时间: 2024-10-25 23:01:09

OMCS开发手册(03) -- 多媒体服务器的相关文章

OMCS开发手册(02) -- 多媒体连接器

OMCS开发手册(01) -- 多媒体设备管理器 一文,我们从Owner的角度详细描述了多媒体设备管理器的使用,本文我们将站在Guest的角度,描述OMCS中另一类组件/控件:多媒体连接器.多媒体连接器用于连接到任何一个在线的OMCS客户端所提供的多媒体设备.所有的连接器都是以Windows控件或组件的方式呈现的,且都实现了IMultimediaConnector接口. 一.IMultimediaConnector 接口 多媒体连接器的接口定义如下所示: public interface IMu

OMCS开发手册(04) -- 二次开发流程

在掌握了前面几篇关于OMCS的详细介绍后,我们就可以正式基于OMCS进行二次开发了.下面我们就从服务端和客户端的角度分别介绍开发的步骤. 一.服务端开发 抛开具体的业务逻辑而言,就OMCS的服务端的开发而言相当简单.步骤如下所示: (1)下载  OMCS多媒体服务器(带源码). (2)使用VS打开OMCS.Server项目,修改其中的DefaultUserVerifier类的实现,为VerifyUser方法添加验证客户端用户帐号密码的逻辑. (3)如果需要使用自定义的主窗体,则实现它. (4)更

OMCS开发手册(01) -- 多媒体设备管理器

我们在前面一篇文章中提到:任何一个OMCS的Client都有两种身份,Owner和Guest.多媒体设备管理器工作于OMCS客户端,并以Owner的身份管理本地所有的多媒体设备.多媒体设备管理器对象是OMCS在客户端的核心对象,它会根据guest的请求自动启动或停止某个多媒体设备. 一.多媒体设备 像本地的摄像头.麦克风.电子白板等都属于多媒体设备,多媒体设备的类型使用枚举MultimediaDeviceType表示: /// <summary> /// 多媒体设备的类型. /// </

谷歌Web中文开发手册:1目的&amp;目录

原文:https://developers.google.com/web/fundamentals/getting-started/your-first-multi-screen-site/ 你的第一个适应多屏幕的网站 现在有一系列的智能手机和大屏幕显示设备(甚至是电视),所以我们需要学习怎样开发一个可以在这些设备中都表现良好的网站. 多屏幕适应的开发经验并不是那么难.根据这个系列的教程,一起来做一个例子: https://www.udacity.com/course/cs256 CS256 M

《阿里巴巴Java开发手册(正式版》读记

前几天,阿里巴巴发布了<阿里巴巴Java开发手册(正式版>,第一时间下载阅读了一番. 不同于一般大厂内部的代码规范,阿里巴巴的这本Java开发手册,可谓包罗万象,几乎日常Java开发中方方面面都有所涉及. 在知乎上,也有关于这本开发手册的讨论十分热烈的帖子. 由于里面涉及的内容比较多,下面重点罗列下一些我读过之后十分赞同与持保留意见的条目: (一)编码规范 (一)命名规约 8. [强制]POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误. 反例:定义为基本数据类型b

HapiJS开发手册

HapiJS开发手册 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.HapiJS介绍 HapiJS是一个开源的.基于Node.js的应用框架,它适用于构建应用程序和服务,其设计目标是让开发者把精力集中于开发可重用的应用程序的业务逻辑,向开发者提供构建应用程序业务逻辑所需的基础设施.HapiJS目前的最新版本为7.2.0版. 二.HapiJS安装和项目配置 1.安装Hapi库HapiJS的安装很简单,执行如下命令:$ sudo npm insta

weiPHP----OneThink1.0开发手册

OneThink1.0开发手册 OneThink系列开发手册在线版 登录 简介 安装 后台使用帮助 架构设计 二次开发指南 附录 安装 复制本页链接 普通环境安装 环境需求: PHP>=5.3.0 扩展 Mysql/Mysqli/PDO , GD2 ,mbstring 在环境检测通过后,最重要的步骤就是填写数据库信息了. 数据库连接类型 : 根据php安装的数据库扩展选择,建议mysqli,不建议mysql 数据库服务器:数据库和web服务器位于同一服务器时,填写127.0.0.1或localh

阿里Java开发手册之编程规约

阿里Java开发手册之编程规约 对于程序员来说,编程规范可以养成良好的编程习惯,提高代码质量,降低沟通成本.就在2月9号,阿里出了一份Java开发手册(正式版),分为编程规约,异常日志,MySQL规约,工程规约,安全规约五个章节.这里我根据阿里的编程规约,重点记录(黑色加粗部分)自己还未做好的一些规范,同时方便查阅. ++阿里Java开发手册下载地址++ 编程规约 一.命名规约 [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name / __name

Navi.Component.DataWindow开发手册(含示例)

1概述 1.1功能简介 Sybase公司的PowerBuilder开发工具,在以前VS工具没有成事以前,是相当风光的.微软都要与其合作,学习它Db方面的技术,才成就了SQLServer数据库.PB开发工具的风光得益于它非常强大的数据窗口功能,这个技术的使用,使得开发管理类软件,尤其是开发数据库管理类软件变得异常简单,与使用VS.NET开发同一软件相比较,其开发周期可以缩短至三分之一,只是随着Sybase的没落,技术更新不及时,使得PB开发工具逐渐被遗忘在时间的长河中,很少被人提及和记起.但数据窗