首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

在Chrome、Firefox等高版本浏览器中实现低延迟播放海康、大华RTSP

现在到处是摄像头的时代,随着带宽的不断提速和智能手机的普及催生出火热的网络直播行业,新冠病毒的大流行又使网络视频会议系统成为商务会议的必然选择,因此RTSP实时视频流播放及处理不再局限于安防行业。在如道路、工厂、楼宇、学校、港口、农场、景区等场景实施的信息化系统中,已基本全采用B/S架构,迫切需要在浏览器中嵌入多路摄像头RTSP流的超低延迟(小于500毫秒)播放功能,而在IE及Chrome 49以下版本等浏览器中,采用ActiveX控件或NPAPI插件即可实现。然而美好总是短暂的,从2015年开始Chrome及Firefox等浏览器纷纷取消了NPAPI插件的支持,而IE又在与Chrome及Firefox等浏览器竞争的过程中不断被用户抛弃,到现在市场份额已降到可怜的个位数。微软在几经折腾后,索性也拥抱Chromium内核推出Edge新版来杀死自己的IE,以挽救自己在浏览器这块岌岌可危的江湖地位。

00

如何优化数据库性能

1、硬件调整性能  最有可能影响性能的是磁盘和网络吞吐量,解决办法  扩大虚拟内存,并保证有足够可以扩充的空间;把数据库服务器上的不必要服务关闭掉  把数据库服务器和主域服务器分开  把SQL数据库服务器的吞吐量调为最大  在具有一个以上处理器的机器上运行SQL  2、调整数据库  若对该表的查询频率比较高,则建立索引;建立索引时,想尽对该表的所有查询搜索操作, 按照where选择条件建立索引,尽量为整型键建立为有且只有一个簇集索引,数据在物理上按顺序在数据页上,缩短查找范围,为在查询经常使用的全部列建立非簇集索引,能最大地覆盖查询;但是索引不可太多,执行UPDATE  DELETE  INSERT语句需要用于维护这些索引的开销量急剧增加;避免在索引中有太多的索引键;避免使用大型数据类型的列为索引;保证每个索引键值有少数行。  3、使用存储过程 应用程序的实现过程中,能够采用存储过程实现的对数据库的操作尽量通过存储过程来实现,因为存储过程是存放在数据库服务器上的一次性被设计、编码、测试,并被再次使用,需要执行该任务的应用可以简单地执行存储过程,并且只返回结果集或者数值,这样不仅可以使程序模块化,同时提高响应速度,减少网络流量,并且通过输入参数接受输入,使得在应用中完成逻辑的一致性实现。  4、应用程序结构和算法  建立查询条件索引仅仅是提高速度的前提条件,响应速度的提高还依赖于对索引的使用。因为人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,特别是对数据量不是特别大的数据库操作时,是否建立索引和使用索引的好坏对程序的响应速度并不大,因此程序员在书写程序时就忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在数据量特别大时或者大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!

05

从零开始学习EasyDarwin(概述篇)

目前EasyDarwin流媒体平台整套解决方案包括有: EasyDarwin(流媒体服务) EasyCamera(开源流媒体摄像机) EasyPlayer(开源流媒体播放器) 工具库(EasyHLS / EasyRTMP / EasyRTSPClient / EasyPusher / EasyAACEncoder) 注意:EasyDarwin有两个私有自定义的Module:拉模式转发模块EasyRelayModule和HLS直播模块EasyHLSModule,这里用到的libEasyRTSPClient、libEasyPusher、libEasyHLS三个库文件都是没有开源的,他们都是EasyDarwin团队开发的SDK库,但这些都是完全免费使用的。 EasyDarwin的编译和部署可以参考官方的文档 http://doc.easydarwin.org/EasyDarwin/README/#_1 一.主体框架   DSS的核心服务器部分是由一个父进程所fork出的一个子进程构成,该父进程就构成了整个流媒体服务器。父进程会等待子进程的退出,如果在运行的时候子进程产生了错误从而退出,那么父进程就会fork出一个新的子进程。可以看出,网络客户和服务器直接的对接是由核心服务器来完成的。网络客户RTSPoverRTP来发送或者接受请求。服务器就通过模块来处理相应的请求并向客户端发送数据包。   核心流媒体服务通过创建四种类型的线程来完成自己的工作,具体如下:   服务器自己拥有的主线程。当服务器需要关闭检查,以及在关闭之前记录相关状态打印相关统计信息等任务处理时,一般都是通过这个线程来完成的。   空闲任务线程。这个任务线程是用来对一个周期任务队列的管理,主要管理两种任务,超时任务和Socket任务。   事件线程。套接口相关事件由事件线程负责监听,当有RTSP请求或者收到RTP数据包时,事件线程就会把这些实践交给任务线程来处理。   任务线程。任务线程会把事件从事件线程中取出,并把处理请求传递到对应的服务器模块进行处理,比如把数据包发送给客户端的模块,在默认情况下,核心服务器会为每个处理器核创建一个任务线程。 二.模块分类   流媒体服务器使用模块来响应各种请求及完成任务。有三种类型的模块:   (1).内容管理模块   媒体源相关的RTSP请求与响应,我们通过内容管理模块来管理,每个模块都用来对客户的需求进行解释并做相应处理,例如读取和解析模块支持的文件,或者请求的网络源信息,并通过RTP等方式响应。   内容管理模块有以下几个:   QTSSFileModule,   QTSSReflectorModule,   QTSSRelayModule,   QTSSMP3StreamingModule。   (2).服务器支持模块   服务器支持模块执行服务器数据的收集和记录功能。   服务器模块包括:   QTSSErrorLogModule,   QTSSAccessLogModule,   QTSSWebStatsModule,   QTSSWebDebugModule,   QTSSAdminModule,   QTSSPOSIXFileSystemModule。   (3).访问控制模块   访问控制模块提供鉴权和授权功能,以及操作URL路径提供支持。   访问控制模块包括:   QTSSAccessModule,   QTSSHomeDirectoryModule,   QTSSHttpFileModule,   QTSSSpamDefenseModule。

03
领券