分类 小雉系统 下的文章

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/43/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


背景

      端口共享主要是为在一些受限环境(如防火墙限制只有http的80可被外网访问)中让自己的业务正常运行(rtsp,hls,gb28181等业务正常运行);
      端口共享技术并不是新技术,如sslh可让ssh和https共用一个端口,haproxy可让ssh,http,https等多种协议共享一个端口;
      小雉系统的主要应用为视频应用,需要同时支持webrtc,rtsp,hls,rtmp,gb28181,sip,rtp,http等协议的端口共享技术并能承载万兆流量方案才能满足小雉系统的需要;
      常见的端口共享方案(如haproxy)采用代理方式,承载万兆流量需要显著增加硬件配置,同时也无法完成视频端口共享的需要;

方案设计要求

  • 配置层支持为每个端口分配不同的协议,实现简易的权限控制(如连A端口的用户只有rtsp和hls视频权限,连B端口的用户有rtsp,rtmp,GB28181的权限);
  • 模块只提供数据匹配的模式,匹配的数据由具体的协议开发者后期添加(模块如内置直接识别各种协议,则此模块的开发者需要了解rtsp,hls,rtmp,webrtc,gb28181,rtp,http等多种协议,难度高;同时即使识别为http协议后可能还需要进行url和其他参数进行分类后传给不同的业务模块);
  • 模块匹配应根据各业务提供的识别码(rtsp,hls,rtmp,webrtc,gb28181,rtp,http各协议的开发者向本模块注册识别码)进行匹配,匹配后把socket直接交于对应的业务模块,而不通过代理中转(不中转则不需要承担各业务的大流量数据,本模块消耗的资源相较视频应用可忽略,同时中转方式需要根据内容(如sip内容识别rtp数据)也是本模块无法完成的);

端口共享模块应用

      小雉系统的端口共享技术已应用于《使用cloudflare免费cdn为小雉系统的http,rtsp,rtmp,gb28181,hls,webrtc,ftp,ssh等服务加速》,"小雉私有接口","GB28181"等应用;
      小雉今后开发的新模块都将支持"小雉的端口共享模块",但仍支持传统的模式,如《小雉视频系统GB28181-2016配置》文章描述的按传统方式使用小雉的gb28181依然有效;
      本处以把端口1111配置为同时支持"小雉私有接口","GB28181 sip","GB28181 rtp"为例说明"端口共享模块"的使用方法如下图:
端口共享模块
      附上添加"GB28181 sip"识别码的代码(就是识别连接的第一个字节是否为"R")

const char * key[] = {"R"}; // 只有一个识别码为"R"
unsigned short keyLen[] = {1}; // 每个识别码的长度
unsigned char caseInsensitive[] = {0}; // 每个识别码是否大小写敏感,0-敏感,1-不敏感
unsigned char protocol[] = {FsBindClassify_P_Match_protocol_1_sip}; // 识别码的抓取方式
fs_bindClassify_add_protocol(pBindClassify, 1, protocol, caseInsensitive
    , keyLen, key, cb, externP1, externP2, mask);

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/
使用Google Authenticator为小雉系统增加动态密码功能:http://www.feitianzhi.com/boke/index.php/archives/17/
GB28181 级联 CDN 回放:http://www.feitianzhi.com/boke/index.php/archives/37/
小雉视频系统负载均衡之GB28181多线负载均衡:http://www.feitianzhi.com/boke/index.php/archives/28/
小雉视频系统GB28181-2016配置:http://www.feitianzhi.com/boke/index.php/archives/41/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/41/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


      小雉视频系统从3.165.3509版本开始支持GB28181-2016版本,SIP指令及视频流均同时支持tcp和udp;

GB28181端口配置

  • 1路具体的gb28181视频配置(储存,rtsp,rtmp,hls,gb28181转发)

1路具体的gb28181视频配置(储存,rtsp,rtmp,hls,gb28181转发)

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/
使用Google Authenticator为小雉系统增加动态密码功能:http://www.feitianzhi.com/boke/index.php/archives/17/
GB28181 级联 CDN 回放:http://www.feitianzhi.com/boke/index.php/archives/37/
小雉视频系统负载均衡之GB28181多线负载均衡:http://www.feitianzhi.com/boke/index.php/archives/28/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/40/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


背景

      小雉系统中使用的rtsp,rtmp等视频协议需要主动连接才能正场工作,在小雉处在公网,相机在内网时,小雉无法主动连接内网的设备--小雉需要通过一定的方式打通内网与外网;
      小雉系统的一些部署环境仅能支持部分7层协议,如只支持http,sip,websocket等标准协议,其他协议均会被防火墙拒绝--小雉要打通内外网必须使用一常见的http,websocket协议;
      小雉系统内置大量的视频应用,使用时需要大带宽承载,小雉致力于技术研发而非内容研发,仅在少部分时间需要运行(如演示时需要大带宽),每月总流量仅几百G,阿某云按出口带宽收费的vps会让小雉支付过多的成本(40M带宽最便宜的vps一个月大概2500,1000G流量某阿云大概800);

探索

      偶然发现https://www.vultr.com/提供的云服务器可按流量计费,1000G一个月5刀(30多一个月),出口带宽百兆以上;
      vultr服务器到一些地方的网非常不稳定,延时高,丢包率大,差时只有几十kb甚至不通,完全满足不了小雉的需要;
      综合本文的背景,小雉把视线看向了cloudflare这种免费的cdn服务商,经测试,使用cloudflare后,http服务的速度能稳定维持在30m/S以上;

确定方案

      使用https://www.vultr.com/提供的云服务器作为测试用例,使用cloudflare提供的免费cdn进行加速实现小雉的专网加速;

vultr注册

  • 首先注册vultr账号,地址:https://www.vultr.com/
  • 注册好第一次进去会提示让你完善信息,首次最少充值10刀, 之后进入控制台界面,点击products,然后点右上角的加号添加server!

小雉系统

  • 如图配置,server选哪里的都可以,但是强烈建议选日本(最近上线了韩国的,也挺好用的),真的比其他地方的快好多

小雉系统

  • 这里要注意了,系统选centos8,centos7,之后配置选5刀的就可以,1000G,1G内存足够用了(小雉系统只有200M)

小雉系统

  • 选好了就可以deploy now了,之后会自动跳转到products节目,这时候你的server是installing的状态,等大概一分钟,就会running。
  • 之后点右边的三个点(server刚起来也可能是叫manage,反正就是最右边的)进入server detail。(如果之后哪天想改下ip,也可以在这里点destroy然后重新建一个)

小雉系统

  • 这里是你的server的一些详细信息,记住你的ip address和password,密码需要点那个小眼睛才能看到。(大家可以看见这里月流量是1000G,我们所有人半个月也就用了100多G,所以5刀的流量足够了)

小雉系统

小雉系统配置(本处用到的域名在下节中给出教程)

准备一个域名(准备小雉专网客户端配置时用到的域名)

      事先得准备一个可用的域名,自己买也好,还是免费注册一个都行,这里推荐一个免费注册域名的地方:www.freenom.com

  • 先注册一个账号登陆上去,点击菜单的Services,选择Register a New Domain

小雉系统

  • 在输入框里输入想要注册的域名:如lovechinacc,点击Check Availability,选择一个域名点击Get it now!

小雉系统

  • 完成后点击Checkout进入下一步

小雉系统

  • 选择免费的 12 个月期限,点击Continue下一步

小雉系统

  • 进入到结算页面后需要填写一些信息,其中红色框出来的地方如实填写,其他的随便填,最关键的是地区,如果你没国外的手机号,老老实实选择 China,不然会校验到你当前 IP 所属国家和你选择的不符会失败。

小雉系统

  • 出现下面的情况说明域名购买成功了

小雉系统

  • 如果购买成功的信息里面有如下图红框圈出来的信息则说明失败了

小雉系统

域名套上 Cloudflare(如不使用cdn加速,小雉专网客户端配置时直接填写小雉专网服务器的ip)

小雉系统

  • 输入事先注册好的域名,点击Add site;如果出现无法添加的情况,请耐心等待一会,刚注册的域名 DNS 还未来得及解析。

小雉系统

  • 选择一个计划,这里我们选择第一个免费的就行了,选择完后点击Confirm plan

小雉系统

  • 点击Add Record按钮添加 2 条 A 记录,Value 指向在vultr购买小雉服务器的IP,点击Proxy status栏中的云朵,让其变成灰色(这个很重要),弄完后点击Continue按钮继续

小雉系统

  • 此时会提示你将域名的 DNS 解析到 Cloudflare,其中有 2 个 Nameserver 是需要用到的。

小雉系统

  • 这里需要重新到 freenom 修改下 DNS,点击Services,选择My Domains,找到之前注册的域名,点击右侧的Manage Domain

小雉系统
小雉系统

  • 点击Management Tools选择Nameservers

小雉系统

  • 选择第二个选项自定义,填写上面的 2 个 Nameserver,点击Change Nameservers保存。

小雉系统

  • 回到 Cloudflare,刷新之前的页面,如果跳转到下面所示控制台页面就成功了,如果没有耐心等待一会,解析需要时间。

小雉系统
      到此Cloudflare加速配置完成了,使用wget下载存于小雉系统/fs/project/data/web/tt1的文件(tt1文件可使用 “ dd if=/dev/zero of=/fs/project/data/web/tt1 bs=1024000 count=1000 ”命令制作),出现如下图,说明Cloudflare及域名解析配置成功。
小雉系统

小雉加速效果

      经以上配置后加速配置应已完成,下图可看到已识别为websocket。
小雉系统

  • ssh到作小雉专网客户端的机器执行ifconfig,可看到多了一个tun0的虚拟网口,并分配了ip。

小雉系统

  • 在作小雉专网客户端的小雉机器上分同时使用tun0接口(使用Cloudflare加速)和普通链路(直接访问vultr的公网ip)下载tt1文件,可看到Cloudflare加速明显。

小雉系统

  • 正常使用谷歌搜索“小雉系统”。

小雉系统

猜您可能喜欢

小雉系统安装: http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/
使用Google Authenticator为小雉系统增加动态密码功能:http://www.feitianzhi.com/boke/index.php/archives/17/
小雉配置工具:http://www.feitianzhi.com/boke/index.php/fslib-config.html
资源下载:http://www.feitianzhi.com/boke/index.php/ziyuanxiazai.html

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/38/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


介绍

      "相机控制"指云台转动,图像变倍,聚焦,光圈控制,预置位控制,3D定位,ptz设置与获取,快门,增益,白平衡控制,亮度,色度,对比度,清晰度控制;
      "相机控制"因一个客户端的控制会影响其他客户端的图像观看和其他业务(比如大领导正在看,突然被其他用户给转了下相机)为每个客户端分配合适的优先级来解决相机控制中的优先级问题;

优先级控制

      "小雉视频系统"中的优先级控制综合了"视频分析","相机锁定","相机控制共享","相机级联"等应用场景,设计出支持相机控制抢占,控制独占,控制共享的优先级控制;
      "小雉视频系统"的优先级核心是在每个指令中增加一个"priority"参数,如相机转动的接口为:

{
    "command_type":"cameractrl",
    "command_for_uuid":"1",
    "ctrl_type":"turn",
    "priority":"0",
    "speedx":"23040",
    "speedy":"0",
    "time":"1.000000"
}

      "priority"的定义如下:

流媒体控制支持优先级控制[0-65534](数值越大优先级越高)
     0:默认值;
     非0:表示特权连接,需要实现连接保持,连接断开自动回0;
         1-比分析优先级低的定义;
         2-255:保留;
         256-29999:比分析优先级低的定义;
         30000-34999:视频分析专用的优先级;
         35000-64999:比分析优先级高的定义:
         65000-65534:保留;
     注:非0优先级中,
          偶数表示可合并的优先级,即如有多个拥有相同偶数优先级的客户端访问同一相机,这些所有客户端的指令会按照新指令覆盖旧指令方式生效;
          奇数表示独占优先组,即如有多个拥有相同奇数优先级的客户端访问同一相机,只有第一个客户端的指令会生效,其他客户端的指令会被拒绝;
流媒体控制支持多指令合并(按高优先级覆盖低优先级,新指令覆盖旧指令方式合并)
      如某用户A以优先级a向流媒体发起指令让相机左转30S,在用户A与流媒体保持TCP连接期间
           如B用户以比a高的优先级b发起指令,流媒体应立即响应B用户的指令,发送信息通知A有比他高的优先级用户控制了相机(信息不保证一定可达),并更改当前控制优先级为b(注:如B断开连接,流媒体把当前优先级置0,而非还原为a优先级);
           如B用户以与A相同的优先级a发起指令,流媒体应立即响应B用户的指令,当A用户与B用户都断开连接后,流媒体才会把当前优先级置0;
           如B用户以小于A的优先级a发起指令,流媒体应不会响应B用户的指令,当A用户断开连接后,流媒体才会把当前优先级置0;
           如A用户使用新优先级b发起指令,b>a,流媒体立即相应A用户指令,并更改当前控制优先级为b,当A用户断开连接后,流媒体会把当前优先级置0;
           如A用户使用新优先级b发起指令,b<a,
                如当前以a优先级保持连接的用户仅有A,流媒体立即相应A用户指令,并更改当前控制优先级为b,当A用户断开连接后,流媒体会把当前优先级置0;
                否则,不响应A用户的指令;

级联控制

      "级联控制"指小雉与小雉之间级联,最下级的小雉会综合所有上级小雉所有用户的优先级进行权衡,此处特别说明的是此级联协议的其他用途;

  1. 控制通知用途
    用tcp连接向小雉发送如下指令,则其他客户端(用小雉私有的ebml,xml,json接口或gb28181,onvif)发送的控制命令都会转发一份给此连接

    {

    "command_type":"controlInfo",
    "command_for_uuid":"camera_ctrl",
    "type":"1",
    "return_type":"json"

    }

  2. 自定义控制要求
    如推送rtsp流A给小雉转gb28181后分享给其他平台,并且编写一个程序使用tcp发送以下数据给小雉,小雉在收到其他平台对流A的GB28181控制信息时会通过tcp连接转发控制信息,并会判断控制的成败以返回给其他平台

    {

    "command_type":"controlInfo",
    "command_for_uuid":"camera_ctrl",
    "type":"2",
    "return_type":"json"

    }

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/
使用Google Authenticator为小雉系统增加动态密码功能:http://www.feitianzhi.com/boke/index.php/archives/17/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/37/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


GB28181级联

流媒体服务器-CDN级联
      "GB28181一般级联"实质是多个sip服务器的级联,转发sip指令到视频源中的sip服务器执行,各级中的流媒体负责转发视频流;
      "GB28181 CDN 级联"在各级增加了CDN服务器,对回放视频流进行缓存,在视频回放时,优先判断本级的cdn服务器是否有对应时间视频,有视频则直接使用本级cdn缓存数据,不向下级请求流,cdn无对应时间视频,则向下级请求视频转发并进行缓存;

小雉级联回放

      小雉系统采用"GB28181 CDN 级联"技术方案实现,同时增加了多种转码服务器,以满足不同设备的需要;

  1. RTSP转码
          RTSP转码器与sip服务器和cdn服务器对接,实现gb28181直播流转rtsp直播流,支持使用rtsp进行视频回放,可用于安防客户端开发;
  2. RTMP转码
          RTMP转码器与sip服务器和cdn服务器对接,实现gb28181直播流转rtmp直播流,支持使用rtmp进行视频回放,可用于老系统web视频直播与回放;
  3. HLS转码
          HLS转码器与sip服务器和cdn服务器对接,实现gb28181直播流转hls直播流,支持使用hls进行视频回放,可用于android,iphone,ipad,qq,微信等H5的直播回放;

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/
使用Google Authenticator为小雉系统增加动态密码功能:http://www.feitianzhi.com/boke/index.php/archives/17/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/35/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


介绍

      一般视频系统由流媒体服务器和信令服务器组成,信令服务器一般负责客户端请求(如客户端要看a视频需要先通知信令服务器分配合适的流媒体去准备a的流,之后客户端才能通过流媒体看a的流)和控制流媒体服务器;本文所述的“去中心管理”就是去掉信令服务器;


中心管理的缺陷

  1. 调试不方便

在对标准流媒体协议进行调试时,如可使用vlc调试rtsp流,但vlc无法同信令服务器通信,使得调试麻烦;

  1. 级联难度高

各级可能使用不同的流协议,如rtsp同rtmp可认为有一定的相似度,但rtsp同gb28181的相似度几乎为0,两种不同协议的信令服务器对接难度非常高;

  1. 不能满足项目定制的需求

信令服务器往往同流媒体相关,在流媒体开发时已对信令服务器提出多项要求,导致信令服务器的一些特性与实际项目相悖;


小雉视频系统之去中心管理

      再合理的设计也是规则,也是束缚,小雉视频系统直接去掉了信令服务器,把信令服务器成为一张白纸,任君在项目中随意书写,以下为小雉视频系统不同协议级联的体验说明
小雉视频系统-级联

  1. 从相机直接拉取rtsp到“小雉视频1_1”

    rtsp地址: rtsp://mym9.com/rtsp_pull
    rtmp地址: rtmp://mym9.com/rtsp_pull
    hls地址: http://mym9.com:16880/rtsp_pull

  2. 相机使用gb28181推流到“小雉视频1_2”

    rtsp地址: rtsp://mym9.com/gb28181_push
    rtmp地址: rtmp://mym9.com/gb28181_push
    hls地址: http://mym9.com:16880/gb28181_push

  3. 从相机直接拉取rtsp到“小雉视频1_1”,
    “小雉视频1_1”再使用GB28181推流到“小雉视频2_1”,
    “小雉视频3_1”使用rtsp从“小雉视频2_1”拉取

    rtsp地址: rtsp://mym9.com/rtsp_pull_gb28181_push_rtsp_pull
    rtmp地址: rtmp://mym9.com/rtsp_pull_gb28181_push_rtsp_pull
    hls地址: http://mym9.com:16880/rtsp_pull_gb28181_push_rtsp_pull

  4. 从相机直接拉取rtsp到“小雉视频1_1”,
    “小雉视频1_1”再使用rtmp推流到“小雉视频2_2”,
    “小雉视频2_2”再使用rtsp推流到“小雉视频3_2”,

    rtsp地址: rtsp://mym9.com/rtsp_pull_rtmp_push_rtsp_push
    rtmp地址: rtmp://mym9.com/rtsp_pull_rtmp_push_rtsp_push
    hls地址: http://mym9.com:16880/rtsp_pull_rtmp_push_rtsp_push

  5. 从相机直接拉取rtsp到“小雉视频1_1”,
    “小雉视频1_1”再使用rtsp推流到“小雉视频2_3”,
    “小雉视频3_3”使用rtmp从“小雉视频2_3”拉取

    rtsp地址: rtsp://mym9.com/rtsp_pull_push_rtmp_pull
    rtmp地址: rtmp://mym9.com/rtsp_pull_push_rtmp_pull
    hls地址: http://mym9.com:16880/rtsp_pull_push_rtmp_pull

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/28/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


概述

      本文的"小雉视频系统"负载均衡是指单机负载均衡,多机请参看本站的其他文章介绍;


使用场景--服务器无公网IP,通过端口映射提供服务

      此类情况常见于云服务商,云服务器使用的是内网ip,通过端口映射提供服务,对于这样的网络环境,如要使GB28181正常工作,云服务商支持ALG是最简单的实现方案,但并不是所有的网络环境都能支持ALG,且有些服务商提供的ALG功能并不完善,存在一定的BUG;
      "小雉视频系统"的GB28181负载均衡提供无需ALG支持跨普通NAT的解决办法,本处以以下情况为例:

  • 服务器内网IP:192.168.1.101,掩码:255.255.255.0
  • 服务器内网IP:192.168.0.2,掩码:255.255.255.0
  • 服务器外网IP:1.1.1.1,服务商:电信
  • 服务器外网IP:1.1.1.2,服务商:电信
  • 服务器外网IP:1.1.1.3,服务商:电信
  • 服务器外网IP:2.2.2.1,服务商:移动
  • 服务器外网IP:2.2.2.2,服务商:移动
  • 服务器外网IP:3.3.3.1,服务商:联通
  • 服务器外网IP:3.3.3.2,服务商:联通

      按下图配置实现部分相机通过外网映射获取GB28181视频流

      上图配置实现了把除192.168.0.0/16网段的视频源通过公网IP映射获取其视频流;


使用场景--多线负载均衡

      对于单服务器如流量过大,可能一条带宽无法满足,可使用多线负载均衡;
      "小雉视频系统"的GB28181负载均衡提供多线负载均衡的支持,本处以以下情况为例:

  • 服务器内网IP:192.168.1.101,掩码:255.255.255.0
  • 服务器内网IP:192.168.0.2,掩码:255.255.255.0
  • 服务器外网IP:1.1.1.1,服务商:电信
  • 服务器外网IP:1.1.1.2,服务商:电信
  • 服务器外网IP:1.1.1.3,服务商:电信
  • 服务器外网IP:2.2.2.1,服务商:移动
  • 服务器外网IP:2.2.2.2,服务商:移动
  • 服务器外网IP:3.3.3.1,服务商:联通
  • 服务器外网IP:3.3.3.2,服务商:联通

      按下图配置实现部分相机的多线负载均衡

      上图配置实现了111.0.0.0/8,112.0.0.0/8,113.0.0.0/8网段的视频源分别按一定的权重进行负载均衡;


使用场景--策略路由

      对于单服务器如流量过大,可能一条带宽无法满足,可使用多线负载均衡,其中使用的多线可能分属各个运营商,视频源也可以分属于多个运营商,此时最优的方案是让电信的视频源走电信流量,联通视频源走联通流量,移动视频源走移动流量;
      "小雉视频系统"的GB28181负载均衡提供策略路由的支持,本处以以下情况为例:

  • 服务器内网IP:192.168.1.101,掩码:255.255.255.0
  • 服务器内网IP:192.168.0.2,掩码:255.255.255.0
  • 服务器外网IP:1.1.1.1,服务商:电信
  • 服务器外网IP:1.1.1.2,服务商:电信
  • 服务器外网IP:1.1.1.3,服务商:电信
  • 服务器外网IP:2.2.2.1,服务商:移动
  • 服务器外网IP:2.2.2.2,服务商:移动
  • 服务器外网IP:3.3.3.1,服务商:联通
  • 服务器外网IP:3.3.3.2,服务商:联通

      按下图配置实现部分相机的策略路由

      上图配置实现了111.0.0.0/8,112.0.0.0/8,113.0.0.0/8网段的视频源分别按一定的权重进行负载均衡,如111.0.0.0/8属于电信,112.0.0.0/8属于移动,113.0.0.0/8属于联通,则上配置也实现了按运营商分类的策略路由;

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/27/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


概述

      "小雉视频系统"虽采用面向过程对象(参见:http://www.feitianzhi.com/boke/index.php/archives/18/)编程,去除线程池等复杂的设计,并减少线程的使用量,但线程数依然高达40个之多;
      40个线程数虽对cpu而言已没有任何压力了,但多线程的复杂性依然存在,其中线程死锁是多线程中最常见同时也难以定位的问题;


线程死锁产生的原因分析

  1. 能否通过合理的设计规划避免线程死锁?

"小雉视频系统"是一份持续维护并增加新功能的代码,代码的修改必须考虑与老代码的兼容,需要处理的细节多,对每次修改都做出完美的设计几乎是不能实现的;

  1. 能否使用第三方工具查找线程死锁?

对开发阶段就能发现的死锁用第三方工具定位是处理问题的通用方法,但使用第三方工具会导致系统速度指数级别的下降,在生产环境中无法使用,同时"小雉视频系统"模块众多,模块均支持按需开启和关闭,任何一个修改需要准备的测试用例太多,死锁后难以确定与此死锁相关的模块;


理想化设计

  1. 死锁时自动报告是哪些线程卡住了?卡在源码的哪一行?卡时的调用堆栈是什么样?
  2. 可在任意时间接受外部干预,报告所有线程当前执行到哪段源代码的哪行并提供调用堆栈;

小雉视频系统--线程死锁设计预览

  1. 线程死锁时自动报告,"小雉视频系统"并不能判断线程死锁,"小雉视频系统"是做视频应用,5S以上的卡顿足以让用户不满,"小雉视频系统"是监视所有线程,看哪个线程连续5S时间内一直停在同一句代码处,以此认为其死锁了,效果如下:

  1. 任意时间打印所有线程的调用堆栈,"小雉视频系统"监听linux下10的信号,在收到信号后打印所有线程当前的调用堆栈,效果如下:

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/26/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


概述

      本地拉取相机是"小雉视频系统"自定义的一种相机类型,此相机类型可以使用通过rtsp,gb28181接入的一个到多个视频流作为输入,然后对这些输入的视频源按一定的规则(如旋转,拉伸)绘制在目标图上,实现图像拼接,分辨率和帧率调整等业务;

      本地拉取相机是以"小雉视频系统"本身接入的视频源作为输入源,而"小雉视频系统"是一个单进程应用,多个本地拉取相机对同一个视频拉取是共享同一份内存的,只需解码一次,如有需求对一视频源叠加不同的水印后作为两路新流输出,则可创建两路本地拉取相机实现这一需求;


两种不同水印叠加后作为两路新流输出

  1. 假设"小雉视频系统"已经使用rtsp接入了一路uuid为src的视频流,如下图所示

  2. 新建一路"本地拉取相机",分别命名为out1,拉取src的流,并在左上脚添加out1的水印,如下图所示
  3. 新建一路"本地拉取相机",分别命名为out2,拉取src的流,并在左上脚添加out2的水印,如下图所示

      如上实现了src拉取rtsp视频流,并解码,out1和out2拷贝src解码后的视频分别进行水印叠加后编码,最后输出新的视频流out1和out2.


分辩率和帧率修改

      本处对out1的分辩率和帧率进行修改,如下图


图像旋转

      本处对out1的图像进行旋转30度,如下图


双图像拼接

      本处以out1的图像为例;

  1. 拉取src两次(也可拉取不同的视频源,如out2也能被拉取),如下图
  2. 以下操作比较复杂,这里把out1拖拽出来生成新界面来配置,操作:鼠标左键按住菜单栏的"out1"选项卡拖拽到菜单区以外放开,如下图
  3. 右键"相机配置"选择"切图配置",如下图
  4. 在图新配置上可以对两图像的相对位置进行调整,也能改变其长宽,进行旋转,右键画区域等,如下图的一个示例
  5. 保存配置后,用vlc查看的效果如下

      同此节方法可实现多相机的图像拼接.

猜您可能喜欢

小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/

本文原地址: http://www.feitianzhi.com/boke/index.php/archives/22/

转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376


概述

      VPN是一种非常成熟的技术,各大操作系统都默认支持pptp,l2tp等技术,但这些技术的使用成本过高,如pptp依赖GRE,l2tp有特殊的关键字,在通信过程中存在被截断的可能;

      KVPN并不仅是为解决传统vpn的缺陷而开发,KVPN是为优化网络速度而开发,KVPN同时支持tcp,udp,http的传输协议,在使用过程中自动选择最优路线进行通信(问:http比tcp优?答:http是为利用历史原因出现的http cdn加速,让本只支持http的cdn加速为我其他应用服务);

KVPN应用场景

  1. 穿透性要求:kvpn数据流无特殊固定的关键字,同时支持动态的数据扰乱,让数据流不具备可识别性,承载方式同时支持tcp,udp,http,数据与普通数据亲近,让数据具备极强的穿透性(延伸扩展:把数据封装于http承载的jpg图片中--只要能用http请求图片的网络都能过,把数据封装在h264,h265视频流中--这样能支持rtsp,rtmp,hls,gb28181的网都能过);
  2. TCP加速要求:tcp是系统实现的可靠传输,重传机制和效率受系统的影响,在总带宽有限的条件下(如果只有我一个人用是够的条件下),如何保证自己的业务畅快运行(实现不公平竞争),是招标pk时经常需要面对的问题;kvpn在进行vpn数据传输时,对tcp数据进行识别,在数据还未发出时就假冒对放作出tcp的回执确认,让系统永远认为网络非常顺畅,kvpn再自己把假冒的数据使用udp(加冗余,快速丢包重传,抢占他人带宽--平时大家都用过迅雷抢带宽)把数据发给对端,实现数据快速通信;
  3. 改善udp效果:udp是不可靠通信,在网络差时会丢包,会对业务产生影响(有的应用程序只能在好的网络下可正常运行--使用udp但没有重传机制),kvpn是基于本机不丢包的前提,在网络传输过程中使用可靠的tcp或带重传机制的udp进行数据传输,保证业务的正常运行;
  4. 低成本的网络加速:因历史原因到一些地方的服务器的延时高,速度慢,而在目前互联网洪水下浮枝(免费资源)的拾取成本较低,其中免费的http cdn加速就是一个很好的选择,kvpn可以把数据封装在http中进行传输,利用免费的cdn进行加速;
  5. 协议识别的再次分发:对于代理软件的开发成本与协议相关,如rtsp代理,代理需要拉取rtsp再对rtsp进行转发,开发需要实现rtsp的完整协议,开发成本高,那可以只识别rtsp的第一条指令,根据指令动态映射到指定服务器吗?使用kvpn在“小雉视频系统”中通过实现视频协议的识别和ip包级别动态路由来实现各种视频应用是kvpn开发的最主要的目的,此部分属于“小雉视频系统”中的高级开发;

KVPN的简单使用

本处提供简单的kvpn测试demo,并提供在centos7(小雉系统中也集成了此demo,可使用小雉系统测试)下的使用教程

  1. 下载kvpn,https://download.csdn.net/download/zhangrui_fslib_org/11693940
  2. 运行服务端
    kvpn服务端
    监听16899端口,允许用户名:user,密码:pwd登录系统
    在客户端认证成功后,本机使用1.1.1.1的ip,分配2.2.2.2给客户端使用
  3. 运行客户端
    kvpn客户端
    使用用户名:user,密码:pwd登录服务器10.172.100.81:16899
  4. 查看服务端结果
    kvpn服务端运行结果
  5. 查看客户端结果
    kvpn客户端运行结果

小雉系统中的VPN使用

小雉系统除集成KVPN外,为与各操作系统集成还集成了PPTP和L2TP,关于小雉系统您需要浏览以下文章:
小雉系统安装:http://www.feitianzhi.com/boke/index.php/archives/11/
小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/
小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/
小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/

  • 在小雉系统中使用pptp或l2tp,以使用10.172.100.81作为服务器

服务器配置



客户端配置,以windows为例




  • kvpn的使用

服务器配置,以10.172.100.81作为服务器



客户端配置,以10.172.100.82作为客户端