精华内容
下载资源
问答
  • 市面上常见的视频会议产品有哪些

    千次阅读 2019-02-14 14:46:38
    市面上常见的视频会议产品有哪些 提起视频会议,大家并不陌生。从动辄几万一套的终端设备,到千元包年的网络付费软件,视频会议产品五花八门。本文帮大家梳理市面上常见的视频会议产品,希望能该大家一定的参考。 ...

    市面上常见的视频会议产品有哪些

    提起视频会议,大家并不陌生。从动辄几万一套的终端设备,到千元包年的网络付费软件,视频会议产品五花八门。本文帮大家梳理市面上常见的视频会议产品,希望能该大家一定的参考。

    视频会议的实现方式目前主要分为两种,“硬件编解码”“软件编解码”,下面就分别展开讨论。

    一、硬件视频会议

    硬件编解码实现音视频会议,目前市面上主要代表产品是宝利通视频会议(Polycom)、思科视频会议(Cisco)和华为视频会议(HuaWei)。

    这类产品的显著特征是会议系统由MCU及视频会议终端组成,各会议室安装特定的视频会议终端(一台专门用于开会的设备,外接麦克风和摄像头),通过网络将本地采集到的音视频信号发送到MCU(即视频会议系统的核心-服务器),当然终端在发送信号前是将信号压缩处理过的。MCU收到各地的音视频信号后会将音视频信号进行混合然后再分发到各个终端,各个终端通过解压缩信号收到远端的音视频画面。

    硬视频会议由于采用硬件直接编解码,在带宽满足要求的情况下,可以实现较好的音视频效果,但由于价格高昂,并非适用于所有场景。上述提到的三种硬件视频会议产品,每个会议室的成本一般不会低于1w,常见的型号有宝利通group310/550/500等,思科型号常见sx10,sx20,sx80,华为常见型号TE30/40/50/60等,国内近几年异军突起的亿联也主打硬件视频会议,常见型号vc500/800/200等。

    其他硬件视频会议产品不在讨论之列。

    二、软件视频会议

    顾名思义,通过软件实现音视频解压缩。市面上代表品牌,国外的webex,zoom、turbomeeting等,国内的好视通、全时等。

    这类视频会议的显著特征是会议系统由会议系统服务器和软件客户端组成。各会议室或参会人员通过电脑或者内置电脑的终端或手机、平板采集音视频信号(一般外接麦克风、摄像头),经过软件的特定算法进行压缩,上传到同一的会议服务器,服务器将各路信号进行混合,下发到各个软件终端显示。

    软件视频会议的效果和软件厂商的技术能力有很大关系,国内会议软件鱼龙混杂,很多不良商家甚至打起了价格战,以便宜的价格提供劣质的软件产品。大家应当对此提高警惕。

    当然,软件视频会议产品虽然通过软件实现,如果在能保证带宽、使用性能良好的操作终端的情况下,也能达到很不错的效果。

    部分软件产品更提供和硬件视频会议终端一样的会议室产品(整合操作系统、软件、摄像头、麦克风),使得产品使用更加方便,但软件编解码的本质没有改变。

    值得一提的是,由于大多数企业或用户没有自己搭建服务器的能力,软件视频会议产品一般使用“租赁账号”的模式在市面上销售,即商家搭好公共服务器,按照月或年出售软件的使用权。此类产品多如牛毛,具体选择什么品牌可测试后选择。

    更多视频会议相关资讯,可浏览碧月科技官方网站,每天实时更新文章,欢迎一起学习讨论、交流。

    展开全文
  • 计算机视觉领域常见期刊和会议

    万次阅读 2018-05-14 18:56:09
    会议: ICCV: IEEE International Conference on Computer Vision(每两年举办一次,由IEEE主办,百度百科:https://baike.baidu.com/item/iccv/7054436?fr=aladdin,ICCV 2017:http://iccv2017.thecvf.com/) ...

    会议:

    期刊:


    参考:

    展开全文
  • 范围类型(range)是es中比较具有特色的数据类型。下面我们就先来看看官方对其的定义。 定义 数字范围类数据。主要类型及范围如下。 数据范围类型的使用 映射定义 假设我们有一张会议表。我们知道实际中党政机关会议...

    范围类型(range)是es中比较具有特色的数据类型。下面我们就先来看看官方对其的定义。

    定义

    数字范围类数据。主要类型及范围如下。

    在这里插入图片描述

    数据范围类型的使用

    映射定义

    假设我们有一张会议表。我们知道实际中党政机关会议都有一个出席率的问题,需要出席率在某个点或某个区间内才能算作是有效的。所以我们的映射结构来了。

    示例如下。

    PUT example
    PUT example/docs/_mapping
    {
      "properties": {
        "expectedAttendees":{
          "type": "integer_range"
        },
        "time": {
          "type": "date_range",
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
    

    数据新增

    假如这时我们需要添加一个10-20人参与,并且在2019-12-01到2019-12-02期间举行的会议。

    PUT example/docs/112313213?refresh
    {
        "expectedAttendees": {
            "gte": 10,
            "lte": 20
        },
        "time": {
            "gte": "2019-12-01 12:00:00",
            "lte": "2019-12-02 17:00:00"
        }
    }
    

    数据查询

    怎么查询呢?假如我们需要查询参会人数满足12人的会议记录。

    GET example/docs/_search
    {
        "query": {
            "term": {
                "expectedAttendees": {
                    "value": 12
                }
            }
        }
    }
    

    结果如下

    {
      "took": 13,
      "timed_out": false,
      "_shards" : {
        "total": 2,
        "successful": 2,
        "skipped" : 0,
        "failed": 0
      },
      "hits" : {
        "total" : 1,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "range_index",
            "_type" : "my_type",
            "_id" : "1",
            "_score" : 1.0,
            "_source" : {
              "expected_attendees" : {
                "gte" : 10, "lte" : 20
              },
              "time" : {
                "gte" : "2019-12-01 12:00:00", "lte" : "2019-12-02 17:00:00"
              }
            }
          }
        ]
      }
    }
    

    当然我们可以按照日期进行筛选。例如下面这个查询。

    POST example/docs/_search
    {
        "query": {
            "range": {
                "time": {
                    "gte": "2019-12-01",
                    "lte": "2019-12-02",
                    "relation": "within"
                }
            }
        }
    }
    

    聪明的同学肯定注意到relation关键字。relation字段上的范围查询支持一个关系参数,该参数可以是WITHINCONTAINSINTERSECTS之一(默认)。

    结果如下

    {
      "took": 13,
      "timed_out": false,
      "_shards" : {
        "total": 2,
        "successful": 2,
        "skipped" : 0,
        "failed": 0
      },
      "hits" : {
        "total" : 1,
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "range_index",
            "_type" : "my_type",
            "_id" : "1",
            "_score" : 1.0,
            "_source" : {
              "expected_attendees" : {
                "gte" : 10, "lte" : 20
              },
              "time" : {
                "gte" : "2019-12-01 12:00:00", "lte" : "2019-12-02 17:00:00"
              }
            }
          }
        ]
      }
    }
    

    基于ip的数据类型也有很有趣的用法,感兴趣的同学可以深入研究下,这里就不展开。

    展开全文
  • 第十三章 会议与WebRTC视频会议

    千次阅读 2019-10-18 16:51:59
    会议是你希望向用户和客户提供的高级功服务一。在我们处于成本控制和时间限制的夹缝之中时,拥有虚拟会议的能力是一种实打实的好处。 更重要的是,如果你能够管理会议,有序地为每位演讲者配麦,对每个与会者静音/...

            会议是你希望向用户和客户提供的高级功服务一。在我们处于成本控制和时间限制的夹缝之中时,拥有虚拟会议的能力是一种实打实的好处。

            更重要的是,如果你能够管理会议,有序地为每位演讲者配麦,对每个与会者静音/取消静音,等等。

            当你能够为与会者混合视频流时,你就能够提供更多的特性:屏幕共享、播放视频、录制,同时提供不同人组成的“舞台”画面…这不仅比在一个实际房间里走来走去参加会议更经济,更便捷,而且会更有成效。

            我们还开发了一个WebRTC客户端,充分利用我们的现代VERTO协议,为参与者和主持人提供一个美丽、高效、沉浸式和引人入胜的会议体验!

            FreeSWITCH给出了所有构建块,由于WebRTC的支持,你的会议参与者、主持人和演示者只需要在他们的计算机、平板电脑或智能手机上安装一款标准浏览器就够了。

            这一章,我们将讨论以下主题:

    • 会议概念,音频和视频
    • FreeSWITCH的会议支持
    • 在FreeSWITCH中设置音频会议
    • 音频会议操作
    • 在FreeSWITCH中设置视频会议
    • 视频会议操作
    • 视频会议中的Verto通信
    • 视频会议的其它技巧

    会议概念

            会议指的是超过两方参与者的一路话务,它一直是电信领域中最受欢迎的服务之一。

            允许两个以上的参与者同时交谈的技术(例如,不在一键通服务中)与两个参与者的“正常”通话的技术大不相同。在“正常”的通话中,你只关心主叫与被叫间的媒体流交换。事实上,你可以让媒体流(以RTP形式)直接在主叫与被叫间双向流动,而不必经过FreeSWITCH或其它任何中间电信服务器。

            另一方面,会议需要一台服务器。会议服务中的最基本功能是混合,比如说把不同参与者所发送的媒体流合并。因此,每个参与者把他们自身的媒体流发给服务器,而所有参与者收到的媒体流是服务器收到的所有媒体流的“和”。参与者之间不直接通信,而是通过会议服务器作为中心枢纽的“星型拓扑”连接在一起。

             除了基本的“合并所有传入流并发送结果流”功能外,会议服务还可以提供更高级的特性。它们可以接受命令来变更输入流的合并方式:仅合并其中的一些流(或仅广播一个流);向参与者播放媒体文件;录制会议会话;更改接收或发送的流的特征,请求识别参与者身份的PIN码;把一名或多名与会者视为“主持人”,对其他与会者和会议管理;等等。

            如你所料,FreeSWITCH提供所有这些功能,甚至更多。

     

    FreeSWITCH的会议支持

            从构思的第一阶段起,FreeSWITCH的设计结构就擅长混音功能。它的内核可以高效地揉合各种流。

            Freeswitch内核中的媒体处理引擎非常灵活,并提供钩子,以便内核开发人员和贡献者添加功能,而不会危及系统的稳定性和效率。

            显然,媒体处理有两个主要的领域:音频和视频。音频和视频的处理方式完全不同,因为它们的性质完全不同。

    音频会议

            音频流由一系列音频样本组成。每个音频样本本质上是一个数字(一个量值),代表声音在时间上的演变。声音可以用我们在高中课本上的正弦波来描述,每个样本都是在某一时刻的振幅值。


            混合(合并,组合)两个或更多的声音样本本质上是对它们的数值求和,然后除以我们混合的流的数量(例如:在每个时间点取平均值)。显然,如果之前样本事先经过压缩、编码,情况就完全不是那么简单了。你需要先对体积标准化。但其最简单的概念形式(未压缩、原始、声音样本)是完全相同的。

    视频会议

            视频流完全是另一回事!它们是一个复杂的值序列,描述图像(“屏幕”)随时间的变化。假设有一部分辨率为1920x1080像素的流式电影(或网络摄像机源)。这些像素中的每一个或大部分(全部变化的情况比较罕见)都可以在每个时间点改变值(颜色、亮度等)。因此,每个时间点的样本并不代表屏幕上每个像素的值,而是分析哪个像素发生了变化以及如何变化的复杂计算结果。你不能直接把它们相加,这样没有任何意义。

             而且,当您将视频流组合在一起时,您希望得到的结果一般不是它们的混合叠加(例如“透明”过渡效果)。您希望将屏幕划分为多个区域,并在每个定义的区域中显示不同的视频流(缩放)。或者在每个屏幕区域上显示浮动徽标或标题。这更类似于电视脱口秀节目中导演所使用的“视频混音与特效”处理。

            在当今的电信世界中,视频会议(视频流组合)有多种策略,每种策略都有其自身的理由和用例:

    • Peer-to-Peer (MESH) 这是基于纯设备到设备的通信(无服务器),其中每个参与者向所有其他参与者发送和接收视频流。视频流在设备端(比如说浏览器)进行组合。如果必须影响所有设备的显示,那么每个参与者必须向所有其他参与者广播控制命令。这种策略的明显问题是带宽的开销与参与者方数呈指数级增长:三方会议交换6路视频流;四方会议交换12路视频流;10方会议需要交换90路视频流…这种技术在WebRTC服务中很流行,但不适用于超过四个参与者的会议场景。
    • Selective Forwarding Unit (SFU)它是一种中央服务器,它接收所有参与者的视频流,并决定将哪个流转发给哪个参与者。中央服务器(SFU)不组合流或对其应用效果,它只决定数据包的出入路由。流由终端设备(比如说浏览器)负责组合,一般情况下它们仅是在不同的区域显示不同的流,并没有进一步处理。如果需要在参与者屏幕上组合多个流,那么所有流都需要路由给所有参与者。这对带宽使用和客户端CPU要求非常高,代价可能是非常昂贵的。
    • Multipoint Conferencing Unit (MCU)它是一种中央服务器,它接收所有参与者的视频流,对它们进行混合、转换和应用特效,然后从处理结果中选择一个流发送给所有参与者。对于带宽和客户端的CPU来说,这种策略的要求可能是最低的(每个客户端向MCU发送它们的视频流,并从MCU接收一路视频流)。但是,它对MCU侧的CPU施加了极大的压力,它必解码所有待混合的流,将复杂的计算机图形应用于标题、徽标、合并和缩放,然后对结果重新编码。
    • FreeSWITCH是一个高级的 MCU(混合视频流和应用效果是一项非常繁重的任务),在“只有一个参与者发起视频流并显示在所有参与者屏幕上”的极端场景下,它会变成对CPU需求极低的SFU(换句话说,没有视频合成,没有特效,只是向所有与会者路由一路视频流)。

     

    FreeSWITCH中的音频会议设置

            Freeswitch包含一个功能强大的内置引擎,它允许在多用户音频会议系统中对呼叫者之间的音频通道进行混音。            mod_conference允许完全控制音频混合和用户交互功能,比如说tone音监测,管理每个通道的的音频收发路径、音量控制、增益控制等等。只要服务器上的资源(内存、CPU等等)允许,你可以创建会议,没有数量的限制。

            mod_conference的配置文件是/usr/local/freeswitch/autoload_configs/conference.conf.xml。会议的特征和行为都由它的profile决定。你可以在配置文件中设定多个profile,每个profile都有其独特的参数集。创建会议时会分配一个profile(通常是在拨号方案中)。会议的配置文件被划分为几个部分,我们接下来会介绍它们。

     

    profiles

            一个会议profile是一组可用于特定会议的设置。与caller-controls(这一节会讨论)结合,会议profiles允许完全定制各个会议的行为。你可以建立几个profiles,并把它们应用到许多会议上;或者为每个打算召开的会议分别建立一个profile;或者干脆简单地使用缺省定义。

            通常的会议profile结构是这样的:

    <profiles>
    <profile name="default">
    <param name="paramName" value="paramValue"/>
    </profile>
    </profiles>

     

            你可以有任意数量的<profile>标记,每个<profile>标记可以配置任意数量的<param>标记。下面是部分可用参数的解释。如果需要完整的参数列表和扩展说明,请打开我们的在线文档http://freeswitc h.org/confluence,并搜索"mod_conference"。

     

    rate

            这个参数定义会议中采用的缺省(最高)采样率。如果不是使用这个采样率,所有接入这个通道的用户都需要把他们的音频转换为这个采样率。为了混音目的,这定义了系统相关的最低采样率----如果两个用户使用高保真话机接入会议,但会议设置的采样率为8000,那么这些用户的音频采样率也将降到较低的速率。

    参数语法:<param name="rate" value="8000"/>

    可选值有:8000、12000、16000、24000、32000, 和 48000

     

    caller-controls

            这个参数定义会议桥所使用的caller-controls profile。

    参数语法:<param name="caller-controls" value="default"/>

     

    auto-record

            这个参数定义会议是否需要自动录音。如果与会人数达到min-required-recording-participants要求,会议就开始录音。如果设置了这个选项,那么必须包含一条可写的路径,以便存储会议录音。

    参数语法:<param name="auto-record" value="filename"/>

    缺省值:off。

    样本文件名:/usr/local/freeswitch/sounds/conferences/${conference_name}.wav

    列出的样本文件名将根据会议桥的名字把会议录制到一个文件中。

     

    interval

            这个参数指定混音时每一帧的长度,单位是毫秒。这个设置类似于ptime的工作方式,但不需要与主叫的实际ptime相匹配。它的数值越高,所需要CPU开销越小,但会导致混音后的音质问题,因此,可以通过试验确定你的设定值。通道使用缺省值就足够了。

    参数语法:<param name="interval" value="20"/>

    缺省值: 20

     

    energy-level

             这个参数指定向其他用户发送音频所需要的能量级别(音频强度/音量)。能量水平是一个阈值,它规定了一个门限,用于判断人的说话声音还是前景噪音。这个特性有助于消除混入会议的背景噪音或环境噪音。如果这个选项值设置过高,会导致一句话的开头部分和结束部分被剪掉。零值表示禁用这项检测,所有语音包都会进行混音,即使是背景 噪音也一样。

    参数语法: <param name="energy-level" value="20"/>

    缺省值:20

    设置为0表示完全禁用。

     

    member-flags

            此参数允许在各个会议成员上设置特定的成员标志或参数。这些选项包括:参与者是否是主持人;是否以浪费方式混音(即使会议中没有人发言,也照常向个人发送音频);某个特定成员是否是会议的领导者(会议需要等待他进入才能开始,他离开后会议结束),等等。选项可以是多选的,各个选项间以管道符”|”分隔。

     

    参数语法: <param name="member-flags" value="waste|endconf"/>

     

            下面我们解释几个member-flags参数的选项。如果需要完整的列表和进一步解释,请访问我们的在线文档http://freeswitch.org/confluence,搜索"mod_conference"。

    • moderator成员拥有一组不同的呼叫控制,可以管理会议:比如对与会者静音或取消静音。
    • deaf默认情况下阻止成员听取会议中的其他成员的意见(可以在会议开始后更改)
    • waste:即使没有对话,也向通道发送音频
    • dist-dtmf向每个通道分发DTMF信号。如果有人在会议中发送DTMF信号音,它通常被FreeSWITCH拦截并处理。这个选项改变DTMF的处理行为,直接把DTMF透传给所有其他成员。
    • endconf如果这个成员退出,那么会议结束

     

    conference-flags

            这个参数设置会议级的标志,定义会议的行为。多个选项间以管道符分隔。

    参数语法:<param name="conference-flags" value="wait-mod|audio-always"/>

     

    下面解释几个常用的conference-flags参数选项。如果需要完整的列表和进一步解释,请访问我们的在线文档http://freeswitch.org/confluence,搜索"mod_conference"。

    • wait-mod强制用户等待主持人进入才能开始会议。当桥接会议时,主持人通过拨号方案传递额外的成员标志来确定。在等待主持人期间,用户会听到保持音。
    • audio-always不检测能量值,成员的发的所有音频包都进入混音(不做静音监测)
    • restart-auto-record如果会议设置了auto-record,并且录音中断,会自动重启录音,录制到一个新文件中。

     

    tts-engine

            此参数指定会议桥中使用的TTS引擎。

    参数语法: <param name="tts-engine" value="cepstral"/>

     

    tts-voice

             这个参数设置会议中TTS引擎输出的声音类型(比如男声、女声、名人的声音)。

    参数语法:<param name="tts-voice" value="david"/>

     

    pin

            设定会议的PIN码(密码),用户进入会议前必须校验它。

    参数语法:<param name="pin" value="12345"/>

     

    max-members

            这个参数设定会议允许的最大成员数。如果会议满员后还有其他人接入会议,系统会拒绝,并向他播放max-members-sound。

    参数语法:<param name="max-members" value="20"/>

     

    caller-id-name

            这个参数设置一个caller ID名字,用于从会议中发出的邀请。

    参数语法: <param name="caller-id-name" value="John Doe"/>

     

    caller-id-number

            这个参数设置从会议桥中出局呼叫时携带的caller ID号码。

    参数语法: <param name="caller-id-number" value="4158867900"/>

     

    comfort-noise

            这个参数设定会议中添加的背景白噪声的音量级别。如果会场中没有人发言,太安静的话有些人会误以为掉线了。此时在会场中加入舒适噪音会让人感觉到依然在线。请注意,在较高的音频采样率下,这个噪声可能会变得烦人,因此如果采样率超过8000赫兹,您可能需要调整此设置。

    参数语法:<param name="comfort-noise" value="1000"/>

     

    announce-count

            此参数将在新成员加入时播报会议中参与人数,但仅当达到此参数所指定的阈值时。它需要有效的TTS引擎。

    参数语法: <param name="announce-count" value="5"/>

     

    suppress-events

            这个参数用于FreeSWITCH事件系统。它是一个逗号分隔的字符串,它限定了获取自定义事件conference::maintenance时,哪些事件不发送给对方。

    参数语法: <param name="suppress-events" value="add-member,del-member"/>

     

    sound-prefix

            这个参数设定检索会议语音文件的缺省路径。

    参数语法:<param name="sound-prefix" value="/usr/local/freeswitch/sounds/"/>

     

    自定义提示音

             在会议中发生某些事件时,会向用户播报一些提示音,有许多参数可以用于自定义提示内容。除了入会与离会的提示音是向所有成员播报之外,其他所有的声音都是在与会者的独立通道中播放的。

            所有声音文件的定义格式都是这样的: <param name="sound-name" value="file.wav"/>

    • muted-sound某个成员静音时听到的声音
    • unmuted-sound:某个成员取消静音时听到的声音
    • alone-sound当场中只有一个成员时听到的提示音
    • enter-sound当新成员入会时,所有与会者听到的提示音
    • exit-sound当成员离会时,其他所有成员听到的提示音
    • kicked-sound被踢出会议时听到的提示音
    • locked-sound尝试接入锁定的会议时听到的提示音
    • is-locked-sound会议被锁定时,与会者听到的提示音
    • is-unlocked-sound会议解锁时,与会者听到的提示音
    • pin-sound要求用户输入PIN码的提示音
    • bad-pin-sound输入PIN码错误时听到的提示音
    • perpetual-sound一种特殊的设置——它永远在一个连续的循环中播放声音。这可以用于广播销售或紧急消息。
    • moh-sound:一个文件或资源句柄,当会议中只有一名成员时,向他播放这个资源。一旦有第二个人入会,除非有mod-wait设定(如前所述),否则立刻停止播放
    • max-members-sound如果会议满员,有人尝试继续接入会议,将听到这个提示音

    caller-controls

               会议中可以配置一些呼叫者控制组,它们开放一些命令,与会者在活跃会场中可以通过按键音执行这些命令。可执行命令有:调整会议音量、对自己静音/解除静音,或其它更高级的选项,例如向个人播放菜单或将人们从一个会议转移到另一个会议。

              呼叫者控制基于会议开始时所应用的预置模板。比如,你可以指定一个控制组(如:按0静音、按1调低音量、按3调高音量),然后把它应用到三个不同的会议中。这些设置在会议开始时(第一个人入会)应用,并在整个会议持续期间生效(最后一个成员退出之前)。你不能在同一个会议中为不同的与会者指定不同的控制集。

              不要把你的控制组命名为"default"或"none"。这些是保留关键字,它们分别对应预置的缺省映射和没有映射的场景。

    下面是一个呼叫者控制组的配置实例:

    <caller-controls>
    <group name="standard-keys">
    <control action="vol talk dn" digits="1"/>
    <control action="vol talk zero" digits="2"/>
    <control action="vol talk up" digits="3"/>
    <control action="transfer" digits="5" data="100 XML default"/>
    <control action="execute_application" digits="0" data="playback conf_help.wav"/>
    <control action="execute_application" digits="#" data="execute_dialplan conference-menu"/>
    </group>
    </caller-controls>

     

            前面这个示例创建了一个叫“standard-keys”的caller-controls profile。按键1、2、3分别对应调低音量、音量正常化,和调高音量;按键5把按键的参与者转移到extension 100上;按键0和#分别执行一个指定的拨号方案APP。

     

    缺省的caller-controls 组 "default"的设置如下:

    <caller-controls>
    <group name="default">
    <control action="mute" digits="0"/>
    <control action="deaf mute" digits="*"/>
    <control action="energy up" digits="9"/>
    <control action="energy equ" digits="8"/>
    <control action="energy dn" digits="7"/>
    <control action="vol talk up" digits="3"/>
    <control action="vol talk zero" digits="2"/>
    <control action="vol talk dn" digits="1"/>
    <control action="vol listen up" digits="6"/>
    <control action="vol listen zero" digits="5"/>
    <control action="vol listen dn" digits="4"/>
    <control action="hangup" digits="#"/>
    </group>
    </caller-controls>

     

    advertise

              会议配置文件中的advertise部分允许你通过FreeSWITCH事件系统向其他服务和订阅方生成状态事件(通告)。这个构想是基于永久性的会议室名称之上生成状态事件,会议室的存在就像一部话机和其它设备一样。外部程序可以监控会议室,并随时获知它的使用状态。

            Advertise设置在Advertise标记中的每个元素中都包含一个会议室名称,例如:

    <advertise>
    <room name="888@$${domain}" status="FreeSWITCH"/>
    </advertise>

     

    FreeSWITCH中的WebRTC视频会议设置

            视频会议的设置是音频会议设置的超集。事实上,无论是音频会议,还是视频会议,配置都由同一模块读取,那就是mod_conference。

            仅支持音频的用户也可以加入视频会议,比如说,来自PSTN的用户(显然,他们只能以声音方式在会议中交流,因为他们不能接收或发送视频流)。SIP用户可以用视频方式入会,尤其是软电话和通信APP的用户。但FreeSWITCH视频会议中的王者是WebRTC客户端,特别是走VERTO的客户端,能够利用一系列高级交互功能。VERTO客户端中的女王者是Verto Communicator,我们面向WebRTC浏览器的旗舰会议客户端。我们后面将学习关于她的更多内容。

            完全配置的Freeswitch视频会议启用了所有特殊的VERTO功能,也是一个完全合法的音频会议,如果所有与会者都没有视频处理能力,那么这个会议与纯音频会议将是不可区分的,它不会创建任何视频流,而且不会使用额外的CPU。

    Profiles中添加的视频参数

            在/usr/local/freeswitch/autoload_configs/conference.conf.xml的"profile"部分中,我们可以添加许多参数,它们用于控制会议中的视频行为,和VERTO客户端特有的功能。接下来我们描述其中的一部分,如果需要完整的参数列表和扩展的说明,请访问我们的在线文档http://freeswitch.org/confluence,并搜索"mod_conference"。

     

    video-mode

            设置视频会议的视频处理模式。透传模式(passthrough)没有进行编码转换。转码(transcode)模式允许转换多种编码格式。复用(mux)模式允许把多个参与方视频合成到同一路视频画面中。允许的参数值:mux, transcode, passthrough。显然透传模式的CPU开销最小。

    参数语法:<param name="video-mode" value="mux"/>

    缺省值:passthrough

     

    video-layout-name

            指定视频布局的名字,这个名字来自conference_layouts.conf.xml或是以"group:"打头的组。这个配置项将启用mux视频模式。没有设置这个参数将按楼层切换演示视频。

    参数值可以是"layout-name"的格式或group:"group-name"的格式(也就是说,组的名字必须以"group:"打头)。

     

    参数语法:<param name="video-layout-name" value="2x2"/>

     

    video-canvas-size

            mux 模式下,画布的像素尺寸。它的值必须是"integer"x"integer"的格式。

     

    参数语法:<param name="video-canvas-size" value="1920x1080"/>

     

    video-no-video-avatar

            为没有视频源的成员准备的PNG文件的路径。

     

    参数语法: <param name="video-no-video-avatar" value="/tmp/novideo.png"/>

     

    video-mute-banner

            为成员设置视频静音横幅文本、字体、字体大小、字体颜色和背景色。字体缩放有效值5-50,fg/bg(前景/背景)十六进制颜色代码,除文本之外的所有设置都是可选的。

            参数值可以是"layout-name"的格式或group:"group-name"的格式(也就是说,组的名字必须以"group:"打头)。

    参数语法:<param name="video-mute-banner" value="{font_face=/path/to/font.ttf,font_scale=5,bg=#000000,fg=#FFFFFF}VIDEO MUTED"/>

     

    caller-controls里增加的视频相关操作

    • vmute视频静默。把这个成员的视频切换进会议
    • vmute on这个成员的视频流静默启用,他的视频不进入会议
    • vmute off取消这个成员的视频静默,他的视频进入会议
    • vmute snap拍摄此用户在vmute中使用的视频快照
    • vmute snapoff丢弃vmute视频快照

    member-flags里增加的视频选项

    • join-vid-floor把这个成员锁定为焦点视频流
    • no-minimize-encoding绕过视频转码最小化器并为此成员单独编码视频
    • vmute进入会议视频 静默

     

    conference-flags里增加的视频选项

    • minimize-video-encoding每个输出编解码使用一个视频编码器
    • livearray-json-status激活一种状态传输机制,以一种机器解析方式描述与会者的状态

    屏幕布局

            在/usr/local/freeswitch/conf/autoload_configs/conference_layouts.conf.xml文件中包含了一些视频相关的配置,它们指定了会议期间组织和填充屏幕的不同方式。

            主持人可以在会议期间动态变更视频的布局以适应不断变化的场景:演示期间,你可能希望演示者的头像可以叠加到她正共享的屏幕上,最终效果就是在PPT上叠加上演讲者的一个小小的头像,形成一个画中画。

            布局定义组织结构有一个标识的名字,将屏幕分成区域的坐标,以及视频流在每个区域的比例。所有的数字,包括坐标和比例因子,都在0-360范围内,并且与画布成比例。因此,将屏幕空间划分为3行3列大小相同的区域(例如,3x3配置)的布局,它的作用在1920x1080画布和800x600画布上是一样的。

    <layout name="3x3">
    <image x="0" y="0" scale="120"/>
    <image x="120" y="0" scale="120"/>
    <image x="240" y="0" scale="120"/>
    <image x="0" y="120" scale="120"/>
    <image x="120" y="120" scale="120"/>
    <image x="240" y="120" scale="120"/>
    <image x="0" y="240" scale="120"/>
    <image x="120" y="240" scale="120"/>
    <image x="240" y="240" scale="120"/>
    </layout>

    布局组

            布局可以按命名的“组”进行分组。如果您在会议上使用“group:groupname”的视频布局,那么FreeSWITCH动态调整视频布局,在组成员中选择最合适显示所有成员的布局方式。

    <group name="grid">
    <layout>1x1</layout>
    <layout>2x1</layout>
    <layout>1x1+2x1</layout>
    <layout>2x2</layout>
    <layout>3x3</layout>
    <layout>4x4</layout>
    <layout>5x5</layout>
    <layout>6x6</layout>
    <layout>8x8</layout>
    </group>

     

            比方说使用上述示例中的组定义,当第一个成员入会时,将适用1x1的布局。然后,随着更多成员加入,布局将动态选择以适应 所有参与者。当成员数从36增长到37的时候,FreeSWITCH会把布局从"6x6"变更为"8x8"。是的,在1920x1080像素的屏幕上,我们可以同时容纳64个与会者的视频流!


     

    FreeSWITCH会议操作

                怎样在拨号方案中调用会议?怎么把一路来电加入已经开始的会议中?怎样在会议中发起呼叫拉入新的成员?此外,会议和视频会议完全可以变得更富有成效和更有趣:避免与会者一个接一个地发言;如果视频焦点能够跟随发言者;如果演讲者演讲时能够分享他的屏幕(过一会后,任何幻灯片都会变得无聊)。

               下一节,我们将讲述如何调用管理会议。

     

    Conference APP (拨号方案)

            呼叫可以通过conference APP接入会议,一般是通过拨号方案调用发起的,通过event socket的API调用发起的场景也很常见。将呼叫者连接到会议的一般语法如下:

    <action application="conference" data="confname@profilename"/>

     

             其中confname参数是任意会议室的名字,而profilename是会议配置文件中定义的(如本章前面所述)。引导到同一个confname@profilename的所有成员,将加入同一个会议室。

               你可以选择性地传递一些特定参数给conference APP,格式是在profile名字之后添加+PIN+flags,下面是一个示例:

     

    <action application="conference" data="confname@profilename+12345+flags{ mute|deaf|waste|moderator|vmute}"/>

     

            如果你只需要传递标记,而不要求PIN码,这时引导PIN码的加号不能省略,就如(请注意连续的两个"+"):

    <action application="conference" data="confname@profilename++flags{ mute|deaf|waste|moderator|vmute}"/>

     

              当第一个与会者接入时,会议按需创建。创建时,profile的设置以及指定的会议PIN码,将连同会议一起记录在内存中。这一点很重要,加载内存的更改,不会影响正在进行中的会议。比如说,一旦一个会议开始时设置了PIN码,任何后续加入这个会议的参与者都必须指定同一PIN码。

              会议的生命周期持续到最后一名成员离会时。

    下面是桥接会议时,data参数的一些示例和说明:

     

    data字段值

    说明

    confname

    Profile为"default",没有任何或PIN码

    confname+1234

    Profile 为"default",PIN码是1234

    confname@profilename+1234

    Profile为 " profilename ",PIN码是1234,没有标记

    confname@profilename++flags{mute|waste}

    Profile为 " profilename ",没有PIN码,设置了多个标记

    confname+1234+flags{mute|waste|vmute}

    Profile 为"default",PIN码是1234,带有三个标记

     

              请注意,虽然有些参数是可选的,但它们的顺序非常重要。

    控制活动会议

            有许多CLI和API命令可用于控制活动的会议。最常用的命令是踢除成员;调整音量;向一个与会者的视频流添加文本横幅(比如说标识他的名字和角色);或者发起呼叫(邀请其他人加入会议)。


            前面这张截图显示了了所有FreeSWITCH控制台可用的API命令。在控制台上输入"conference",然后敲击两下TAB键就可以看到(第一次敲击TAB键将列出所有运行中的会议,在我们的案例中只有一个,第二次敲击TAB就会显示与这个会议相关的所有可用命令)。比如说,你可以用以下命令变更视频布局:

    conference 3500-lab.opentelecomsolutions.com vid-layout 3x3

     

            或者在member_id为"2"的与会者的视频流底部加上一个标题(注意单引号的使用保证横幅内容的完整):

     

    conference 3500-lab.opentelecomsolutions.com vid-banner 2 'Giovanni Maruzzelli <gmaruzz@OpenTelecom.IT>'

     

            更多扩展说明,请访问我们的在线文档http://freeswitch.org/confluence,并搜索 "mod_conference"。

     

    邀请人员加入会议

              FreeSWITCH可以向外发起一呼呼叫,并把被叫接入会议。这可以通过APP "conference_set_auto_outcall"和它的辅助通道变量来完成。

            但是,由FreeSWITCH管理员(或会议主持人)来执行这个动作或许会更有用,可以实时通过fs_cli交互:

     

    conference 3500-lab.opentelecomsolutions.com bgdial user/1010 +12125551212 weekly_conference

     

    Verto Communicator与Video-WebRTC会议

            Verto Communicator是我们的旗舰WebRTC客户端,专门开发用于参与、管理和主持FreeSWITCH视频会议。在华丽的用户界面之下,有VERTO协议的强大支撑。VERTO协议的设计对于web开发人员来说很容易上手 ,它是基于JSON的。JSON + WebSocket意味着双向实时交换信息的能力。只有你看到以下这些,对这一点才会有深切的感受:Verto Communicator(VC)会实时更新聊天信息和参与者数组;参与者说话时伴随着图标闪烁;她自己静音时,麦克风和摄像头的颜会随之改变。

            VC允许参与者自行设置自身相关的一些内容:出入的音量、音频静音、视频静默、选择要麦克风和摄像头(重要的是,如果你有一台笔记本,兼作工作站,你可以躺在桌子旁边,附在华丽的USB 3供电的集线器和背投显示器)。

            此外,VC在它的GUI中公开了所有管理员工具:踢人、静音、视频静默、选择流、添加标题、快照、会话录音、播放音/视频文件、改变布局……重要的是这些都是通过点击鼠标完成的。

            要安装支持WebRTC视频会议所需要的各种组件和VC,请参考本书的第五章“WebRTC,SIP和Verto”。

     

    设置

            当你第一次连接Verto Communicator页面时,呈现在你面前的是一个简约的小窗口,它请求你输入姓名(稍后你的名字将出现在会议参与者名单和聊天窗口中)。如果单击“设置”链接,则该窗口将展开,你可以输入所有连接细节,包括连接到哪个服务器、授权用户名和密码。


            然后,有可能需要你选择使用哪些多媒体源,比如麦克风、摄像头和扬声器(你可以轻松地在树状控件中选择音频资源:笔记本电脑内置、USB声卡、摄像头内的麦克风):


            现在,你已经完成设置并登陆,可以拨号了:


    成员列表

            加入会议后,你将在右侧看到带有交互头像和状态图标的成员列表。


    参与者GUI命令和聊天

            点击"chat"选项卡,你会看到实时同步的聊天窗口,当你将鼠标悬停在主窗口上时,屏幕上会显示用户操作命令:麦克风切换、网络摄像机切换、全屏、屏幕共享、音频输出选择和拨号盘。


    主持人GUI命令


            如果你是以主持人身份连接的,那么你的屏幕上会有更多的控制功能:除了参与者控件之外,主持人还有录音/停止录音、播放/停止播放、抓取快照和一个设置屏幕布局的下拉菜单。

            此外,会议主持人还能点击右边参与者列表中的音频和视频小图标,切换他们的媒体,可以给他们添加标题(比如说姓名和角色),设置视频优先级(会议焦点),等等。


    屏幕共享

            共享你的整个屏幕,或一个应用窗口是很简单的。只需要点击参与者控件中的屏幕共享("screenshare")按键,将会弹出一个提示框,选择你希望共享的内容就可以了。我决定共享我写这一章时用的LibreOffice窗口。此外,我将会议布局更改为“重叠”("overlaps"),现在会议参与者是在我的应用程序窗口(可以是幻灯片、电子表格、终端等)上叠加的实时视频小窗口。


    总结

            这一章我们学习了FreeSWITCH的会议功能。在简要概述音频和视频会议技术之后,我们了解了Freeswitch如何支持它们的。

           我们学习了如何在FreeSWITCH中设置音频会议和使用它的丰富功能。进一步了解如何扩展设置会议的视频能力,和WebRTC交互。

            然后,我们了解了怎样在FreeSWITCH控制台上管理和操纵会议,怎样从拨号方案呼入会议,怎样从会议中发出邀请。

            本章结束时,我们对会议参与者和主持人的Verto Communicator特性和功能进行了可视化演示。

           我们已经准备好为我们的用户提供领先的会议服务!

            下一章,我们将研究电信实施者的可怕敌人:NAT,并介绍FreeSWITCH的设计中是怎样解决它的。

     

    展开全文
  • ROS会议 ROSCon 2017

    千次阅读 2017-08-02 16:38:53
    ----ROSCon2012-2017----来源链接:https://roscon.ros.org 近三年ROSCon(2015-2017)都会将...那就是在加拿大温哥华温哥华会议中心的同一地点发生的IROS之前的星期四和星期五。所以如果你打算到IROS旅行,只需要加
  • YUV RGB 常见视频格式解析

    千次阅读 2012-10-21 23:26:48
    YUV RGB 常见视频格式解析 I420是YUV格式的一种,而YUV有packed format(紧缩格式或者叫打包格式)和planar format(平面格式)两种,而I420属于planar format的一种。  同时I420表示了YUV的采样比例4:2:0。4:2...
  • 本文从真空断路器运行中常见的故障着手,进行故障分析和提供...至1992年天津真空开关应用推广会议时,我国真空断路器的制造技术已经进入了国际同行业同类型产品的前列,成为我国高压真空断路器应用、制造技术新的历史
  • 如何有效管理项目会议

    千次阅读 2012-10-12 16:41:39
    会议已经成为项目经理的一项重要工作内容,它提供交换和分享信息与观点的手段。项目经理和团队成员在项目会议上花费了大量时间。...然而,许多会议并非富有成效,这些会议准备得不够充分,主持得也毫无
  • 常见风控策略

    千次阅读 2020-09-14 11:17:09
    一是了解风控中金融常见业务规则的类型(大概有个认知即可); 二是了解对应架构是如何的(以携程为例,简单了解即可); 三是对一些金融中常用的策略模型算法解释,这部分是重点重点 风控金融的基本业务 消费分期...
  • 出门在外巧遇紧急会议,手机接入模糊不清,挠头状…… 企业内部分支偏远,开会协同缓慢,耸肩状…… 异地开会成本居高不下,叹气状…… 跨企业跨区域交流沟通,效率低下,无奈状…… 这些该怎么办? 开会这件事...
  • 十大开源视频会议

    千次阅读 2015-01-27 14:42:21
    视频会议及流媒体十大开源项目   在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈、有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把...
  • 文献类型

    2017-02-07 02:33:11
    文献类型
  • 常见视频编码格式解析

    万次阅读 多人点赞 2017-12-15 14:12:56
    常见视频编码格式解析 常见视频编码格式解析 1.MPEG2-TS编码技术 1.1.MPEG-TS简介 1.2.基本概念及TS流概述 1.3.基本流程 1.4.TS流传输包(简称TS包)结构分析 1.4.1.TS包包头 1.4.2.TS包净荷部分 1.5.PS节目流 ...
  • 常见网络端口 和 常见网络协议

    千次阅读 2014-05-07 22:50:22
    常见网络端口 端口:0  服务:Reserved  说明:通常用于分析操作系统。 端口:1  服务:tcpmux  说明:这显示有人在寻找SGI Irix机器。 端口:7  服务:Echo  说明:能看到许多人搜索...
  • telegram 常见问题

    万次阅读 2021-02-08 07:04:07
    使用电报,您可以发送任何类型的消息,照片,视频和文件(doc,zip,mp3等),以及创建最多20,000个人的群组或频道,以广播无限制的受众群体。你可以写信给你的手机联系人,用他们的用户名找到人。因此,电报就像...
  • 常见的软件测试常见面试题

    千次阅读 2019-04-22 22:19:53
    1)测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议。 2)测试计划阶段:主要任务是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自...
  • AT 指令和常见错误码

    千次阅读 2011-07-22 17:00:52
    最近分析bug经常需要看radio的log, 把常见的AT命令放在这里备忘。一、 一般命令 1、 AT+CGMI 给出模块厂商的标识。 2、 AT+CGMM 获得模块标识。这个命令用来得到支持的频带(GSM 900,DCS 1800 或PCS 1900)。当...
  • 如何视频会议中回声的发现与消除

    千次阅读 2011-07-29 10:00:44
    回声是电视会议中最常见的声音问题之一。在会议电视系统的调试过程中,回声的发现与消除,是需要系统维护人员重点解决的一个课题。 一、 回声的定义及特征 1. 什么是电视会议中的回声 在电视会议中,当本会场的声音...
  • 浅谈网络编程中的常见问题

    万次阅读 2019-08-27 17:43:47
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等) 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 5、TCP首部...
  • 视频会议十大开源项目排行

    千次阅读 2014-04-25 15:09:06
    在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈、有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频...
  • 视频会议及流媒体十大开源项目

    千次阅读 2018-08-29 10:45:54
    在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈、有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频...
  • 本文就目前常见的相机输出接口CVBS、VGA、DVI、HDMI、SDI、Camera Link、HS-LINK、CoaXPress这8种类型做出一一介绍。 1.CVBS CVBS是Composite Video Broadcast Signal的缩写,中文翻译为复合视频广播信号。这是最...
  • 即时通讯 视频会议开源技术选择

    千次阅读 2014-12-24 11:02:20
    在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈、有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频...
  • C 语言常见问题集

    千次阅读 2014-11-18 09:32:10
    C 语言常见问题集 原著:SteveSummit翻译:朱群英,孙云 修订版0.9.4,2005年6月23日 版权所有c . 2005  目录 目录 i  前言 xvii  1 声明和初始化 1  1.1 我如何决定使用那种整数类型?................
  • 如何有效管理项目会议

    千次阅读 2007-03-12 15:20:00
    如何有效管理项目会议 会议已经成为项目经理一项重要工作内容,它提供交换和分享信息与观点的手段。项目经理和团队成员在项目会议上花费了大量时间。...因此,懂得召开什么类型的项目会议,什么时
  • 视频会议的混音算法

    千次阅读 2006-09-08 11:24:00
    在多媒体会议中,音频互动是基本的要素之一,它是多媒体会议中最基本的要素.由于在分组网络中没有QoS,所以网络的拥塞导致了端到端通信的语音丢包和延时抖动等问题同时,多个端点同时相互发送数据更进一步增加了网络传输...
  • Python基础概念_14_常见术语

    千次阅读 多人点赞 2017-06-16 09:46:02
    常见术语 15 常见术语 15.1 简介 Python里有一些常见的专业名词、用语,我们一般统称为术语。为了更方便的学习python我们通过表格的方式列举了常用的术语和单词以及工具。 15.2 常见术语 术语名称 相关...
  • 如何组织和召开项目会议

    千次阅读 2008-06-12 10:27:00
    最近手上比较不忙,上网浏览了一些帖子,觉得比较实用的就copy并记录下来,权且当作共享吧。ERP项目实施过程中,经常需要召开会议来检查项目进展以及讨论各类方案。... 常见会议有几种:讨论会、碰头会、协调会、

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,801
精华内容 10,720
关键字:

常见会议类型