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

转载请注明出处,有疑问或错误请发邮件到xiaozhi@fslib.org 或加QQ群:869598376


概述

      本测试环境使用两台服务器搭建,ip分别为10.172.100.81和10.172.100.82,把10.172.100.81服务器映射到公网,软件使用"小雉视频系统": http://www.feitianzhi.com/boke/index.php/archives/4/;


总览地址(可查看相机状态,相机快照): www.mym9.com:16880

  • 10.172.100.81服务器使用rtsp拉取相机10.172.100.44的流

    1. rtsp直播转发 : rtsp://www.mym9.com:554/rtsp_pull
      播放方法:使用vlc播放,需要使用rtsp over tcp, udp未映射到公网
    2. hls直播转发 : http://www.mym9.com:16880/rtsp_pull
      播放方法:使用vlc播放或使用html5中的video标签播放
    3. rtmp直播转发 : rtmp://www.mym9.com:1935/rtsp_pull
      播放方法:vlc或flash播放
  • 10.172.100.44相机使用gb28181协议推流到10.172.100.81服务器

    1. rtsp直播转发 : rtsp://www.mym9.com:554/gb28181_push
      播放方法:使用vlc播放,需要使用rtsp over tcp, udp未映射到公网
    2. hls直播转发 : http://www.mym9.com:16880/gb28181_push
      播放方法:使用vlc播放或使用html5中的video标签播放
    3. rtmp直播转发 : rtmp://www.mym9.com:1935/gb28181_push
      播放方法:vlc或flash播放

猜您可能喜欢

小雉系统安装: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/5/

转载请注明出处,有疑问或错误请发邮件到xiaozhi@fslib.org 或加QQ群:869598376


      Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

         我的理解是Telnet就是一个用tcp建立的一个连接,客户端与服务器之间发送与接收以\r\n结尾(linux以\n为换行符,不用这个做换行符的不用看此文章了)的数据信息,基于此原理,客户端在发送一些特定的二进制信息登录telnet服务器后,再发送要运行的程序文本就可运行自己想要的程序,之后等待服务器发送\r\n回来,收到就表示要运行的程序已死;

         基于上述编程原理可实现以下功能:

                1,telnet运行程序实质是前台运行,此法可让不能后台运行的程序后台运行;

                2,telnet客户端检测到要运行的程序时退出后,自己主动退出,因终端退出后,在此终端运行的所有程序都会退出,可彻底解决那些已退出程序序但在后台假死的问题;

        此文章的具体应用在文章:http://www.feitianzhi.com/boke/index.php/archives/4/

       附用shell telnet 运行程序的脚本

{
sleep 1
echo "root"
sleep 1
echo "root"
sleep 1
echo "cd /bin"
echo "ls"
sleep 1
while [ 1 ]; do sleep 10; done
echo "exit"
} | telnet 127.0.0.1

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

转载请注明出处,有疑问或错误请发邮件到xiaozhi@fslib.org 或加QQ群:869598376


常见问题

  1. "小雉视频系统"是什么?

"小雉视频系统"是使用"面向过程对象"框架开发的一个单进程软件,旨在集所有客户的需求于一体,在完善软件功能的同时也让老客户得到持续化的服务,达到开发者与客户的共赢;

  1. "小雉视频系统"有哪些功能?

"小雉视频系统"是一个持续更新的软件,所有的新需求都会在主线版本中实现,并向下兼容,具体的功能请下载最新版本体验;

  1. "小雉视频系统"的售后服务有多长,能否满足项目周期的需要?

"小雉视频系统"的第一个版本可以追溯到2010年,在经历了多次重构后,在2013-2014年后软件的框架稳定性,兼容性,扩展性,效率都有了优异的表现,能同时应用于linux,windows,嵌入式linux平台,cpu资源,内存,句柄,线程问题都有了定量跟踪的方式(参看本站的其他文章),并且配置能做到多样化(json,xml都支持),参数默认化(json中只写部分参数,系统会使用默认值自动补全其他参数),双向兼容(新版本可以兼容老版本的配置,老版本也能兼容新版本的配置),2014年至现在约5年的版本都可以相互兼容,都处于服务周期范围之内;

  1. "小雉视频系统"的优势是什么?

"小雉视频系统"最近5年时间内所有的客户需求都集成到一起,按需启用,框架的稳定性,兼容性,扩展性,效率得到了验证,同时其强悍的版本兼容性可大大降低长周期项目的成本;

  1. "小雉视频系统"长周期的项目兼容,是否意味着软件的架构陈旧,无法引入新技术?

"小雉视频系统"使用的框架规定了进程内模块设计,配置设计等软件开发相关的规范和技术要点,同时也定义了系统引导,内核,驱动,文件系统,启动,命令工具等一系列的规范,从2014年以来发布的版本的系统经历了centos6.3,centos7.1,centos7.3等系统版本的变化,但这些版本间是可以相互平滑切换的,即"小雉视频系统"的兼容不仅体现在配置的相互兼容,也支持跨系统版本,跨内核的兼容,2020年将推出centos8.1系统的"小雉视频系统",敬请大家体验centos8.1系统的"小雉视频系统"和centos7系列的"小雉视频系统"的无缝切换;

一,功能清单:
        1,单机版(多网口)支持400路以上视频流(1080及以上,4M码流)采集--已实现;

        2,支持全天录像--已实现mkv支持;

        3,支持硬盘滚动写入,磁盘满时自动删除最早的文件,支持磁盘配额--已实现;

        4,支持磁盘阵列,支持动态扩容--已实现;

        5,支持通用播放器播放储存的视频--已实现兼容vlc,portplayer;

        6,支持视频rtsp分发(不限客户端数量,瓶颈在网络)--已实现;

        7,rtsp使用kcp不公平协议抢占网络资源(在网络丢包,如无线网,可比tcp延时小50%以上)--已实现(同时支持tcp和udp);

        8,支持视频hls分发(不限客户端数量,瓶颈在网络,pc上的vlc,android上moboPlayer实测与海康网页直播延时1S)--已实现,测试中;

        9,支持视频文件rtsp点播--已实现;

        10,支持按时间rtsp点播视频(既视频回放,回放与实时视频相比最小延时约为2S,保证10S)--已实现;

        11,支持接收第三方程序发送的xml或json,并根据内容合成视频(延时约1S,保证5S)--已实现;

        12,支持远程配置系统--已实现;

        13,支持接受xml或json导入配置,方便第三方公司控制系统--已实现;

        14,支持ftp浏览和下载视频--已实现;

        15,支持客户端控制点播速度(可实现快速,慢速和单步播放)--已实现;    

        16,支持通过gb28181平台预览视频,控制球机(现只支持海康球机)--已实现; 

        17,支持拉取第三方gb28181平台的视频数据进行储存+rtsp转发+rtsp回放+hls转发+gb28181再推送 --已实现;

        18,支持"支持gb28181的相机"直接推送视频数据到服务器进行储存+rtsp转发+rtsp回放+hls转发+gb28181再推送,同时支持NAT穿透 --已实现;

        19,支持第三方使用GB28181协议访问本服务器的储存视频,同时支持第三方使用GB28181协议访问与本服务器属于同一集群的服务器上的储存视频--已实现;

        20,支持接入onvif相机,代理相机控制指令,实现集中控制;

        21,支持阿里云oss储存回放;

        22,支持分布式集群(各台主机相互独立,互不依赖,对客户端来说集群内的任何一个节点都是中心服务器,访问任何一台主机都能获取到集群内其它主机上的数据)--已实现;

        23,鉴于22条的特性,程序具有中心服务器热备,负载均衡等功能--已实现;

        24,加入以telnet方式运行程序,同时配合看门狗,保证系统稳定持续运行,参考文章:http://www.feitianzhi.com/boke/index.php/archives/5/;

二,系统优势
        1,程序采用C语言,支持arm,x86平台,具有跨平台特性;

        2,程序经历了三次重构,拥有先进的框架和良好的扩展性;

               1),首次编写使用传统的c面向资源对象设计(如一个相机一个对象,增加相机就增加一个类的实例),导致在通道过多时,会新建大量的对象,日志的数据量成倍增长,在处理大并发时系统将创建大量的线程,线各程的创建和消亡占用了过多的cpu,基于这些原因,在功能全开时程序只能做到100路以内的并发;

               2),第一次重构加入了线程池的机制,同时程序也去掉了第三方库(不再需要live555,ffmpeg等第三方库),依然使用面向资源对象设计,这个版本虽做了大量的修改,代码量极度减少,cpu占用降低,但并发数增加仍不明显;

               3),第二次重构改变了程序的设计风格,改用使用面向过程的设计模式(或面向过程对象的设计模式,一个过程一个对象,因系统内任何一个资源只经过一个过程一次,即完成整个任务所需要的过程数就是系统总的线程数,这让系统的线程数不再与通道相关,成为一个定值),解决了线程过多的问题,同时也省去了复杂的线程池,让系统变得高效简单,让系统并发数突破1000;

               4),第三次重构是对第二次重构的优化,也是真正工程化的实现,在第二次重构后,虽然并发数大大增加,但大并发时的一些不可预见性问题因程序不能追踪(因路数太多,用记录日志的办法效率低下,几乎是因量太大无法分析),系统bug的修复变得困难,这次重够加入了系统异常自动记录功能,在出现异常时,可自动定位并记录异常出现在源码的什么文件的多少行,同时还可记录出现问题时对应线程你关心的内存的值,大大加简化了系统bug定位和修复,让直接处理生产环境中的异常变为了可能,同时还增加了线程资源实时消耗的统计信息,能实时了解系统中各线程的cpu占用情况;这次重够还去掉了glib的依赖,系统不再使用链表,使用数组代替链表,修改所有的查找排序的算法为二分查找,让单系统达到万级并发成为了可能;

        3,系统不使用数据库,单进程,不依赖第三方库,简单可靠;

        4,系统同时支持xml和json通信,让第三方集成变得异常简单;

        5,程序使用配置导入导出方式进行修改程序,让程序可以向下并向后兼容,彻底解决版本不兼容给使用者带来的问题;