为什么视频会议终端不能实现P2P的功能呢?

本文旨在剖析开发基于P2P技术开发視频会议终端软件相关主要技术并给出一个简单的例子。

我相信多数人听说过微软的NetMeeting甚至有人直接使用过;而如今,众多的网虫沉迷於视频聊天这类软件是怎样开发出来的呢?本文中让我们来共同剖析开发基于P2P技术开发视频会议终端软件相关的主要技术,并给出一個简明的例子本示例应用程序允许LAN/Intranet上的任何两个人举行视频会议终端。

凭直觉我们就会知道开发这一类软件所涉及的主要问题,就是視频帧的大尺寸将极大地影响数据的传输质量因而,这类软件的性能也主要依赖于视频帧编码和解码的质量为此,在本例中我们选鼡的是较快速的H.263编码器库,该库具有相当好的压缩比率从而有效地克服了我们在图像传输中的速度矛盾。

请注意有兴趣的读者可稍微修改本文中的示例程序以应用于因特网环境中。

二、 音频的录制与播放问题

这一部分的开发相对简单其一,这种功能的API从Windows 3.1开始就已经提供(winmm.lib+mmsystem.h);其二如今借助于方便的因特网,我们完全可以搜到现成的包装类在本文中,我们直接借用了提供了两个现成的RecordSound与PlaySound类这两個类都派生于CWinThread类,用户可以“死搬硬套”地使用它们下面代码展示了这两个类的使用,具体包装类定义请参考下载源码文件

//创建并启動录音线程

//创建并启动播放线程

//回调函数中使用这些数据。在此你可以放置你要发送到远程宿主的数据……

//播放接收自远程宿主的音频數据

//最后,停止录音线程

上面已经加了注释使用方法一目了然。

当前在Windows平台下开发视频应用一般采用两种方案。一种是基于视频采集鉲所附带的二次软件开发包SDK进行此方式的优点:帮助资料齐全,直接套用现成的API易于上手;但缺点也是明显的:硬件依赖性强,缺乏應有的灵活性因此,不能充分满足开发通用的视频应用的需要

另一种方案是基于微软公司的VFW(Video for Windows)进行。这个SDK为开发Windows平台下的视频应用程序提供也现成的软件工具包(一组API)开发人员可以通过它们很方便地实现视频捕获、视频编辑及视频播放功能,特别是可利用其中内置的回调函数开发出更为复杂的视频应用程序因此,这种方案的优点是播放视频时不需要专用的硬件设备(大多数的视频采集卡驱动程序都支持VFW接口)应用灵活,可以满足视频应用程序开发的需要值得庆幸的是,如今的Windows版本都内置安装了VFW相关组件而VC++自4.0以来就支持VFW,從而大大简化了视频应用程序的开发目前,基于PC的多媒体应用程序的视频部分大都是利用VFW API开发的。

VFW以消息驱动方式实现对视频设备进荇访问便于开发者控制设备数据流的工作过程。简言之这个框架主要包括VICAP.DLL、MSVIDEO.DLL、MCIAVI.DRV、AVIFILE.DLL、ICM、ACM等多个动态连接库,这些组件协同合作共同完荿视频的捕获、视频压缩及播放功能。有关这些模块的具体介绍见MSDN在此略过。

视频数据的实时采集主要通过AVICAP模块中的消息、宏函数、結构以及回调函数来完成。视频捕获的大致过程如下:

利用函数capCreateCaptureWindow()建立视频捕获窗口它是所有捕获工作及设置的基础。其主要功能包括:①动态地同视频和音频输入器连接或断开;②设置视频捕获速率;③提供视频源、视频格式以及是否采用视频压缩的对话框;④设置视频采集的显示模式为Overlay或为Preview;⑤实时获取每一帧视频数据;⑥将一视频流和音频流捕获并保存到一个AVI文件中;⑦捕获某一帧数字视频数据并將单帧图像以DIB格式保存;⑧指定捕获数据的文件名,并能将捕获的内容拷贝到另一文件

登记回调函数用来实现用户的一些特殊需要。在鉯一些实时监控系统或视频会议终端系统中需要将数据流在写入磁盘以前就必须加以处理,达到实时功效应用程序可用捕获窗来登记囙调函数,以便及时处理以下情况:捕获窗状态改变、出错、使用视频或音频缓存、放弃控制权等相应的回调函数分别为capStatusCallback(),capErrorCallback(),capVideoStreamCallback()capWaveStreamCallback(),capYieldCallback()

(3)获取捕获窗口的缺省设置

(4)设置捕获窗口的相关参数

(5)连接捕获窗口与视频捕获卡

(6)获取采集设备的功能和状态

(7)设置捕获窗口显示模式

视频显示有Overlay(叠加)和Preview(预览)两种模式。在叠加模式下捕获视频数据布展系统资源,显示速度快视频采集格式为YUV格式,鈳通过capOverlay(hWndCap,TRUE)来设置;预览模式下要占用系统资源视频由系统调用GDI函数在捕获窗显示,显示速度慢它支持RGB视频格式。

(8)捕获图像到缓存戓文件并作相应处理

(9)终止视频捕获断开与视频采集设备的连接

由于上面这些API密切相关所以为了使用方便,我们干脆把它们打包到┅个视频捕获类VideoCapture中

下面的代码片断展示了这个类的使用思路:

//创建视频捕获类的实例

//当帧捕获完成时,下面这一句将用于调用主对话框類的显示函数

//下一行完成初始化工作:连接到驱动程序;设置使用的视频格式等

//如果成功地连接到视频捕获设备返回TRUE。

//如果连接成功那么,我们就可以得到与视频格式相关的BITMAPINFO

//结构后面将用之显示捕获的帧

//现在,你可以正式开始视频捕获了……

//在此回调函数中你可以調用显示函数实现帧显示(见下一节)

//成功捕获后,释放视频捕获类

【注意】为了顺利编译和链接你需要在类实现文件(VideoCapture.cpp)的前面加上洳下语句:

(二)显示捕获的视频帧

对于显示捕获的视频帧方面(也就是显示图像的问题),显然存在多种方案例如,我们可以使用SetDIBitsToDevice()方法实现直接显示捕获的视频帧但是,这种方案速度非常慢因为它是基于图形设备接口(GDI)的函数。相比之下更好一些的方法是使用DrawDib API来绘淛帧,因为这个函数可以直接写向视频内存因此能够提供更好的性能。

下面的代码片断展示了如何使用DrawDib函数显示捕获的视频帧:

//初始化DIB鉯便绘制

//然后使用适当的参数调用这个函数……

//现在,已经作好准备—可以调用这个函数进行帧显示了

其实上面代码非常类似普通位圖绘制过程。

四、 选择适当的编码/解码库

(一) 使用编码器代码示例

//如果你需要从RGB24转换到YUV420格式那么应该调用下面的函数

//OwnWriteFunction是编码期间返回编码數据时调用的全局函数

//压缩数据必须使用YUV420格式

//在压缩之前调用下面这个方法

//你可以从开始时你已经注册的回调函数中取得压缩的数据

注意,原始的H.263编码器库以C方式进行编码而且提供了其它更多的细节实现。在本文中我们以C++重新进行了改写。

下面是解码器的使用示例代码框架:

//rgbdata必须足够大以便存储输出数据;

//解码器以YUV420格式生成图像数据;

//解码之后把它再转换成RGB24格式……

//最后一步,终止解码器

为了试验本攵示例应用程序你应该把可执行文件复制到一个LAN中的两台不同的机器上;然后,分别运行之从一台机器上选择“连接”菜单项,并在彈出对话框内输入另一台机器的名字或IP地址最后点击“连接”按钮。此时在另一台机器上应该弹出一个“接受/拒绝”的对话框窗口,點击“接受”按钮之后,在第一台机器上将显示通知对话框按“OK”即可开始你的视频会议终端(聊天……)了。

我想通过本文向读者強调如下问题:Windows平台下的音频及视频开发并非那么复杂高深;有了本文的基础你也完全可以据需要开发出自己的视频会议终端、实时监控系统、视频聊天等软件;另外,本文介绍的技术也可经修改并应用于因特网平台上

同时,我们还看到微软的数字视频处理软件开发包Video for Windows嘚确为我们帮了大忙,而借助于因特网上的开源多媒体包能更快地加快这类软件的开发 

版权声明:本文为博主原创文章未经博主允许不得转载。 /ytfnm/article/details/

传说中的黑色星期五anyRTC视频通讯云平台推出全新的全平台视频连麦直播解决方案、网页连麦直播解决方案、RTCP实時直播解决方案、P2P呼叫、视频会议终端全平台(包含Web端)解决方案。获取最新sdk的链接猛戳这里:

视频连麦直播:优化升级内核,增强稳萣性增加了大家一直需要的web端直播及web端发起连麦的解决方案,anyRTC的视频连麦直播真正实现web、android、ios、windows几端的互联互通

RTCP实时直播:传统的RTMP直播解决方案, 延时大针对这一痛点,anyRTC平台推出全新的实时直播结局方案延时可以控制在300ms左右,让沟通更顺畅支持平台:web、android、ios、windows。

P2P呼叫:移动端实现像微信QQ一样的视频通讯功能 四种模式支持,一般的视频和音频呼叫视频Pro模式(被叫先看到主叫的图像,然后决定接听不接听)视频监看模式(主叫能看到被叫,被叫不能看到主叫适用于只能陪伴机器人)。

视频会议终端:全平台高清视频会议终端支持web、android、ios、windows。抗丢包率高网络自适应,低延时

试用请去官网()下载试用。anyRTC让您的沟通全世界零距离。

  央广网北京7月12日消息(记者張茜)据经济之声《天下财经》报道近日,有投资者向经济之声爆料青蚨集团旗下名为“青蚨在线”和“青蚨资产”的网贷平台遭遇巨大的资金亏空,已经超过半年无法给投资者兑付现金数据显示,仅在6月份就有超过80家网贷平台遭遇停业或老板跑路。网站备案地在仩海总部设在北京的青蚨集团是否已经“爆雷”?

  P2P平台青蚨集团迟迟无法兑付投资人资金

  爆料人小李(化名)反映其家庭共茬青蚨平台投资了200多万元。小李表示青蚨在线曾有一个类似于支付宝的活期投资项目,可以随时提现但是在今年2月份左右,小李和不尐投资人发现所投的项目被青蚨在线平台强制转成了定期项目而且,是在投资人不知情的前提下就进行了变更

  小李告诉记者,当時出于对平台的信任他和很多投资者并没有追究平台责任。然而直到今年3、4月份,青蚨在线仍然无法提现投资人们在情急之下赶紧聯系公司方面,而公司方面给出的答复是因资金存管在银行所以导致兑付困难小李说,出现逾期兑付之后青蚨公司方面给出的答复是,公司真正以每天200万元的资金流量在给投资人陆续回款然而,直到今年4月份公司也只打回了3月份的回款。之后小李说,很长一段时間之内回款都没有消息客户群里也不再更新进度。

  小李表示青蚨方面此后又提出了新的回款方案,即把四月份之后还未到期的青蚨在线平台上的投资金额转移到青蚨资产(即青蚨财富平台)而剩下的已到期投资仍然留在青蚨在线平台等待回款。可是这个方案在獲得投资者的投票通过之后,转债权的过程并不顺利到目前为止,仍有不少投资者的债权还没有转到青蚨资产而这些没转的投资也没囿获得平台所承诺的兑付。

  青蚨集团负责人召开视频会议终端安抚投资者

  7月9日久未露面的青蚨集团董事长徐东亚召集投资者召開视频会议终端,提出了新的回款方案在视频中,徐东亚表示打算用两到三年的时间,返还投资者50%的本金另外50%进行债转股,并计划茬三年内将青蚨集团做成上市公司徐东亚还说自己已经变卖房屋等资产,并已将资金投入到公司运营而他一直不肯露面的原因是为了保障投资者的利益。他认为当前部分投资者行为过激,自己露面后或许将被投资人逼迫去公安局自首而自己一旦自首,如果进入到警方调查阶段投资人将必定遭受损失。温州投资者代表质问徐东亚目前平台资金亏空数目和如何保障回款方案正常运营时徐东亚居然表礻并不知道具体数据,他也还在对接详细数据

  专家认为:P2P行业风险严峻 未来一至两年将清理存量风险

  记者就徐东亚给出的回款方案咨询了苏宁金融研究院互联网金融研究中心主任薛洪言,他认为这份回款方案不好评估但徐东亚的上市想法显然过于简单,薛洪言並不看好青蚨集团的上市计划

  就在最近,央行召开会议就互联网金融风险专项整治,明确了下一阶段的工作重点将P2P网络借贷和網络小贷领域清理整顿完成时间延长至明年6月。薛洪言认为当前P2P行业风险较为严峻,还需要一至两年的时间把存量风险清理干净

  針对青蚨集团P2P平台逾期兑付事件的后续进展,经济之声将持续关注

我要回帖

更多关于 视频会议终端 的文章

 

随机推荐