视频会议远端摄像机控制的研究 |
哈尔滨工业大学通信技术研究所(150001) 于 波 刘进慧 张中兆 |
| 摘 要:分析了视频会议中如何实现对远端摄像机的控制,该项技术在远程教学和实时监控方面起着非常重要的作用。 关键词:视频会议 winsocket 规程分析仪 |
| 随着我国改革开放的不断深入和经济的迅猛发展,社会上方方面面的会议、会晤、磋商与日骤增,特别是在经济领域,信息、时间、效益等现代化的观念开始深入人心,以及在各行业部门的行政会议增多情况下,作为先进国家的现代化通信手段之一的会议电视业务通信的即时性和便利性等就显示出了突出的优越性。 |
| 本软件的编写及调试均基于VCON公司生产的MeetingPoint E25视频会议系统,E25不具有摄像机控制功能,而C150具有摄像机控制功能。也就是说在两个C150之间可直接进行摄像机的相互控制,而利用E25系统控制远端摄像机的转动是不可行的。因此,编写一个在不同系统下兼容的软件是非常有必要的,而且具有实际意义。 |
| 1 设计思想 |
| 本软件的总体结构采用客户机-服务器模式。具体工作过程如下:通过规程分析仪,我们可测得对摄像机具体的控制信号。首先,客户机发一信号(例如LEFT),通过网络传到服务器,服务器根据不同的信号向COM口写不同的控制信号,相应地与COM口相连的摄像机就会作出各种动作。在编程过程中,首先给出了RS-232C与摄像机接口的连线,然后给出了用规程分析仪测定控制信号的方法,对SONY摄像机的控制信号进行了测定。由于要实现远端摄像机控制,所以信号的传输是建立在网络的基础上。接下来是对网络通信Windows Csocket的原理介绍,这为后面实现信号的传输打下了基础,也是此软件的关键。 |
| 2 控制线的连接及控制信号的测定 |
| 2.1 控制线的连接 |
| 由于要实现对摄像头的控制,因此需要在主机COM口与摄像头接口之间连一控制线,RS-232C与SONY摄像头对应针的连接如表1所示。 |
![]() |
| 2.2 控制信号的测定 |
| 运用规程分析仪可以对各种协议进行分析,我们用规程分析仪测得摄像头转动的各种控制信号。其部分控制信号如下,以十六进制形式给出。 |
| ·初始化信号 |
| 0x883001FF |
| 0x88010001FF |
| 0x81090447FF |
| ·向右转信号 |
| 0x810106010B090103FF |
| 0x810106010B090303FF |
| ·向上转信号 |
| 0x810106010B090301FF |
| 0x810106010B090303FF |
| ·聚焦信号 |
| 0x8101040724FF |
| 0x8101040700FF |
| 0x81090447FF |
| 3 程序的具体实现 |
| 本程序采用了客户机/服务器模式,主要功能为从一台计算机控制连接在局域网中另一台计算机上的摄像头,从而可以随时地采集到会议室内任意地方的图象,由于对摄像机的控制可通过向串行口写数据加以实现,因此程序的核心问题是如何快速有效地实现网络上数据的交换。为了达到实时的效果,本文采用了Windows Socket实现网络的实时通信。 |
| 3.1 SOCKET编程原理 |
| 我们知道TCP/IP的核心部分是传输层协议(TCP,UDP)、网络协议层(IP)和物理接口层,这三层通常在操作系统内核中实现。操作系统的内核是不能为一般用户所能感受到的。一般用户感受到的只有应用程序(包括系统应用程序),即各种应用程序构成了操作系统的用户视图。应用程序是通过编程界面(即程序员界面)与内核打交道的。TCP/IP网络环境下的应用程序是通过网络系统编程界面套接字SOCKET(在WINDOWS操作系统下为WINSOCK)实现的。网间应用程序之间的作用方式为客户机/服务器模式。TCP/IP协议核心与应用程序的关系如图1所示。 |
![]() |
| 网间应用程序间的通信实质就是不同主机进程间的相互通信问题。为此,需要用一个三元组在网间网中全局唯一地标志一个进程(协议,本地地址,本地端口号),这样的一个三元组叫做一个半相关。而一个完整的网间网进程通信实例由两个进程组成,因此一个完整的网间网进程通信(包括两个端进程)需要一个五元组来标志(协议,本地地址,本地端口号,远地地址,远地端口号),这样的一个五元组叫做一个相关。其中的端口是TCP和UDP与应用程序打交道的访问点,是TCP/UDP协议软件的一部分。TCP/IP协议规定了一些标准保留端口号的使用(用于服务器进程);用户进程可以申请使用非保留端口,这个端口的标志符(端口号)是本机唯一的。因此,将端口号作为网间网上进程本身的描述符。 |
| 在TCP/IP网间网中,通信的两个进程间相互作用的主要模式是客户/服务器模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于以下两点:首先,建立网络的起因是网中软硬件资源、运算能力和信息的不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,相互通信的进程之间既不存在着父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为两者的数据提供同步,这就是基于客户/服务器模式的TCP/IP。 |
| 不管SOCKET的内部机制如何,它提供给应用程序员的最终界面是一组系统调用:包括创建套接字CONNECT与ACCEPT、监听连结LISTEN,以及用于数据传输的SEND和RECV,还有关闭套接字的CLOSESOCKET等。图2是SOCKET面向连结的基于客户/服务器模式的系统调用时序图。在VC++5.0中提供了两个类以支持用WINSOCK API进行网络编程。类CasynSocket封装了WINSOCK API的函数,其网络功能很强大;Csocket则将网络编程简化为向一个Carchive类中串行化数据。在编程中我们的类是从Csocket类中派生的。 |
![]() |
| 3.2 功能函数介绍 |
| 在本软件中,客户机程序和服务器程序均采用Visual C++5.0编写。在MFC类库中有专门负责管理WinSock编程的Csocket类,在Csocket类中,它覆盖了所有的Win32API函数,因此在用WinSock编程时,只需用Csocket声明一个实例,然后即可调用相应函数进行各种操作(Csocket类成员函数见Visual C++ Books on Line。使用Csocket类时,必须同步声明CsocketFile类实例。 |
| 在本程序中用到的主要函数介绍如下: |
| ·Csocket::Create |
| 函数原型:BOOL Create(UNITnSocketPort=0,INT nSocketType=SOCK-STREAM,LPCTSR IpszSocketAddress=NULL); |
| 功能:在建立一个Socket对象之后,调用Create函数来创建Windows Socket,然后调用Bind函数给Socket赋一特定的地址。 |
| 参数: |
| nSocketPort: Socket选用的端口。 |
| NSocketType:Socket类型(SOCK-STREAM,SOCK-DGRAM)。 |
| IpszSocketAddress:服务器的网络地址。 |
| ·CasynSocket::Connect |
| 函数原型:BOOL Connect(LPCTSR IpszHostAddress,UNIT nHostPost) |
| BOOL Connect(Const SOCKADDRIpsockAddr,INT nSockAddrLen) |
| 功能:调用Connect函数与服务器建立连接。 |
| 参数: |
| IpszHostAddress:服务器的网络地址。 |
| NHostPost:服务器使用的端口。 |
| IpsockAddr:指向SOCKADDR的地址,包含了被连的Socket的地址。 NSockAddrLen:IpsockAddr包含的地址的长度。 |
| ·GetCommState |
| 函数原型:BOOL GetCommState(HANDLE hFile,LPDCB lpDCB) |
| 功能:从指定的通信设备取当前的控制设置。 |
| 参数: |
| hFile:通信设备的句柄。 |
| LpDCB:DCB结构的指针。 |
| ·SetCommState |
| 函数原型:BOOL SetCommState(HANDLE hFile,LPDCB lpDCB) |
| 功能:为指定的通信设备设置控制信息。 |
| 参数:同上个函数中参数(hFile.LPDCB)的定义。 |
| ·WriteFile |
| 函数原型BOOLWriteFile(HANDLE hFile,Lpvoid IpBuffer,DWORD nNumberofBytes Towrite,LPDWORD Ip- NumberofBytes Written,LPOVERLAPPED Ipoverlapped) |
| 功能:往串行口写数据,此操作对同步或异步通信都是适用的。 |
| 参数: |
| hFile:串行口句柄,此串行口的句柄用GENERIC-WRITE方式创建。 |
| IpBuffer:指向包含数据缓冲区的指针。 |
| NNumberofBytesTowrite:写向串行口的数据的字节数。 |
| IpNumberofBytesWritten:指向实际写向串行口数据的字节的指针。 |
| Ipoverlapped:指向OVERLAPPED结构的指针。 |
| 4 程序流程图 |
| 在本软件中共有客户机和服务器两个程序,其流程图分别如图3和图4所示。 |
![]() |
![]() |
| 5 软件实现的功能 |
| 本软件可以实现以下四个方面的功能: |
| ·客户机可以随意控制服务器的摄像机上下左右的转动; |
| ·客户机可以随意控制服务器的摄像机聚焦和拉伸; |
| ·客户机可以与服务器进行交谈,交换意见; |
| ·客户机方和服务器方都可保存对方的留言。 |
| 参考文献 |
| 1 黄东霖.视听多媒体业务.北京:电子工业出版社,1997 |
| 2 Michael J.Young.Mastering Microsoft Visual C++ 4. 北京:电子工业出版社,1997 |
(收稿日期:1999-07-13) |
相关推荐
通过手势控制摄像头的上下左右移动及缩放
本代码模拟实现手势控制摄像头的上下左右移动及缩放,并在实际项目中应用效果良好。
unity实现用鼠标右键控制摄像机视角上下左右移动
using System;using System.Collections.Generic;using UnityEngine;public class ViewControl{ enum RotationAxes { MouseXAndY, MouseX, MouseY } R...
C++Builder开发海康摄像头控制软件--摄像头图像预览与云台控制
C++Builder XE6开发的海康摄像头控制软件,摄像头图像预览与云台控制;http://blog.youkuaiyun.com/skysonya_shisy/article/details/70340201
unity中鼠标左键控制摄像机视角上下左右移动
enum RotationAxes { MouseXAndY, MouseX, MouseY } RotationAxes axes = RotationAxes.MouseXAndY; //@HideInInspector float sensitivityX = 15; //@HideInInspector float sensitivityY = 15; //pri...
揭秘个人开发者接支付宝的‘野路子’:不用企业资质,用Python模拟扫码转账与回调监听
本文探讨了个人开发者如何通过Python模拟支付宝扫码转账与回调监听的技术实现,解析了支付宝URL协议格式,并设计了本地化的支付状态监听方案。文章强调该方法仅用于技术研究,实际应用需遵守支付宝官方接口和金融合规要求。
UPF2.1进阶指南:如何优雅地处理Hard Macro与Top-Level Port的电源意图
本文深入解析UPF2.1在复杂SoC设计中的高级电源意图建模,重点探讨Hard Macro与顶层端口的电源管理实战技巧。通过`power_model`和`set_port_attribute`的高级应用,解决第三方硬核IP电源建模不透明、顶层端口电源属性定义不当等工程难题,提供可靠的电源管理方案,确保芯片设计性能与功耗的精确控制。
第三章 视频会议系统国际标准
第三章 视频会议系统国际标准标准化是产业兴旺发达的前提,视频会议系统各种设备的生产厂商,它们的产品必须符合相应的标准互相连接通信,这样才能使视频会议系统产品市场迅速发展。总部位于瑞士日内瓦的国际电信联盟(ITU),主要任务使制定通信标准,以便世界范围内通信的互相操作。它的成员来自不同的国家和公司,ITU包括了著名的国际电报电话咨询委员会(CCITT),现在改名为国际电信联盟—电信标准化部门(ITU
Light Tools 8.4 在 win10系统上的安装方法(64位)
** 总的来说安装LT需要以下步骤(折腾了三天终于装好): 安装LT软件–禁用签名–加载含数字签名的第三方inf–添加注册表/安装驱动/添加密钥–成功破解 一、下载对应的LightTools 8.4版本软件,如下图为解压后的文件: 并选择 进行默认安装。 二、禁用数字签名。这里我用了两种方法,一种不行就换另一种,最终成功禁用。 方法1: 1、输入“cmd”并以管理员身份运行; 2、输入或复制 bcdedit.exe /set nointegritychecks on (此命令若没成功,再试bcded
双向视频会议系统的需求分析
信息技术的迅猛发展,改变了各行各业的传统工作模式。信息的无限量扩大,交通工具的便捷,互联网技术的充分应用等导致了行业间竞争的全球化,这就要求现代部门、企业要具备更加灵敏的神经,更扁平化的管理,更快速的反应和决策,更贴切的市场宣传和服务。所有这一切是由于信息技术的发展带来的,同样也要求有先进的信息技术来提高部门、企业的竞争力。双向视频会议可以跨越空间距离、...
STM32独立实现CANOpen主机功能:从零构建轻量级控制方案
本文详细介绍了如何在STM32上不依赖CanFestival库,从零构建一个轻量级的CANOpen主机方案。文章深入剖析了CANOpen主机的三大核心功能——NMT网络管理、SDO参数配置与PDO过程数据交换,并提供了从硬件准备、驱动层构建到协议实现的完整代码实战。该方案代码精简,资源占用低,特别适合在资源受限的STM32平台上实现工业控制、电机驱动等场景的稳定通信。
Zotero+WPS文献引用跳转功能缺失?3分钟教你用VBA宏搞定(附完整代码)
本文针对WPS用户使用Zotero时文献引用无法点击跳转的痛点,提供了一套完整的VBA宏解决方案。通过解析Zotero的域代码,自动在文内引用和文末参考文献之间创建超链接,实现一键跳转,极大提升了学术写作与文献查阅的效率。
电视电话会议系统的学习
技术文档:视频会议系统集成与维护方案。
Neo4j:入门基础(二)之导入CSV文件
导入CSV文件的方式 主要的两种方式如下: 1、使用 Cypher 命令LOAD CSV,这种方式可以处理中小型数据(可达10 million条记录) 2、使用批量导入工具neo4j-admin ,用来直接导入大数据集 三、上述方式具体导入过程 1、Cypher 命令LOAD CSV 参数 1、USING PERIODIC COMMIT 300 使用批量提交,每满300条提交一次,防止内存溢出 2、WITH HEADERS 从文件中读取第一行作为参数名,...
多媒体应用设计师 第2章 多媒体信息处理及编辑技术 习题(含答案)
(9) A、感觉媒体B、表示媒体c、传输媒体D、存储媒体参考答案:B。
YOLO车辆测距、车辆识别与单目测距
YOLO(You Only Look Once)是一种实时物体检测系统,能够识别视频或图像中的多个对象,并确定其位置。结合车辆识别与单目测距技术,YOLO可以用于交通监控、自动驾驶等应用场景,通过单个摄像头实现车辆的识别与距离测量。YOLO结合单目测距技术,在多个应用领域展现出巨大的潜力与灵活性。其实时性和准确性为智能交通、自动驾驶等领域提供了强有力的技术支持。
Python爬虫实战:东方财富股吧与雪球舆情数据实时爬取与情绪指标挖掘
本文详细介绍如何使用Python爬虫技术实时爬取东方财富股吧和雪球平台的讨论数据,结合股价波动构建情绪分析指标。我们将使用最新的异步爬虫技术、自然语言处理方法和可视化工具,为量化交易提供数据支持。文章包含完整的代码实现和技术细节,适合有一定Python基础的读者学习。





1197



被折叠的 条评论
为什么被折叠?



