nginx代理视频流网络也是一方净土


OpenEuler 22

OpenEuler 22.03 发布时我把它部署到生产环境了,用来跑Nginx作视频点播。1Gbps的自有带宽总是有限的,用多用少,一年都要收那么多钱。而分发给CDN的流量,是按量计费的。那么就产生一个很合理的省钱方案了,自有带宽尽量用足,在自有带宽跑到900Mbps以上时,动态的分配流量给CDN,自有带宽使用率越高,转发给CDN的流量分成就越多。
先做准备工作:在图一代码中加一个随机数,生成范围0-100。
在图二的ftl中通过随机数与设定值的大小关系决定把流量发给谁。
现在就要解决,怎么通过自有带宽的实时数据,更改设定值的问题了。
刚好内网有一台zabbix,监控了出口交换机,当然在运维主机上装snmpwalk也是可以的。
写好图三的脚本,crontab每分钟执行,完美实现削峰填谷分流效果。
一个小小的主动作为,没什么技术含量,省了多少钱也不需要老板知道,自我感觉良好就好!

接到做视频监控的需求

接到做视频监控的需求。
摄像机的原始视频流是rtsp流,其缺点是浏览器不支持。可以通过nginx+ffmpeg服务器将其转换成rtmp流或者hls流。
rtmp:延迟小,需开启flash支持
hls:延迟高,无需flash支持
主流浏览器开始淘汰flash技术,但是客户又不能忍受高延迟。

C语言运行效率高于C++

C语言运行效率高于C++,因此极致追求运行效率的基础设施一般采用C语言开发,比如操作系统内核,nginx这种高并发的网络代理,redis这种高速缓存,还有ffmpeg这种视频处理库,基础设施使用C语言能降低硬件消耗和提高单台服务器的负载能力。而应用层面的开发一般不使用C语言,点击一个按钮做增删改查,从0.002秒提升到0.001秒没有多少意义,应用层一般是开发效率优先。很多人上来就会反驳:C++运行效率也不慢啊。只能说功力还不够,我这里只举一个例子。string str=&34;; str += " world";写C++的时候,这样写很爽,实际上已经有效率损失了。原因在于string功能过于强大,它是动态的,并不知道使用者到底要用它存储多长的字符,因此只能在堆上分配内存,而如果只是用很短的字符,比如1K以内,在栈上分配其实就够了。堆内存的分配与释放显然带来额外的开销。C语言里需要程序员自己根据场景决定用堆还是用栈,运行效率要高。莱迪娜的风声

C和C++完全是两种语言,很多人将c/c++合并在一起来讲。但实际上这会对新人造成一种误导。cpp从c++11之后,和C

原本同事有个视频直播的项目

原本同事有个视频直播的项目,可以试水视频直播,结果对方说必须出差就没谈成。我已经开始了技术调研阶段,通过springboot/nginx/rtmp-module实现推流,拉流。这个demo,稍后会再分享一下

疫情期间在家隔离

疫情期间在家隔离,趁着休息的时间自学了springboot和vue。全部都是自己动手按着视频敲的代码,基本上已经熟练掌握了springboot的开发原理。开发的过程中还加了中间件Redis、nginx、nacos。Redis是为了缓存方便下次可以快速取数据,nginx是处理前端所有的请求,通过nginx把请求分发给后端不同的服务,也可以分发给网关gateway。nacos是springclud的知识,可以把不同的服务注册到nacos上,方便远程调用。数据库用的是mysql,导入相关的表在springboot配置一下就可以。

以为页面播放rtsp流只能用传统的方式

肤浅了,以为页面播放rtsp流只能用传统的方式,起服务调用 ffmpeg进行转码,转成前端能识别的格式, 如 .mp4 .flv ,前端基于他进行视频播放.....
殊不知目前已存在的基于 FFmpeg 的方案延迟都太高,还有别的更优的方式,刚看了看 基于 WebRTC 的 RTSP 视频实时预览 ,也是方便的一批...
WebRTC 可以简单理解成像nginx 一样,起个服务
由于 webrtc 的核心库还不支持 h265, 所以需要设置为 编码
大致步骤

1. 下载最新包
在github 发布页面根据需要的平台选择相应的包下载
Releases · /webrtc-streamer · GitHub

2. 进到本地下载的目录,以超管方式运行,启动服务

3. 服务启动后,可以访问 http://127.0.0.1:8000/webrtcstreamer.html?video=rtsp://user2:1234abcd@120.224.60.237:554 网页上播放rtsp 就有了

4. 路已打通,具体细节想怎么用,参考看下页面webrtcstreamer.html 的demo用法和文档,进行实际的融合细化就行
是不是很爽......

网络也是一方净土

网络也是一方净土,所以需要舆情监控,今天介绍一款正在开源的这类项目
思通舆情 的功能:
舆情监测:通过全文搜索、来源搜索、热搜监测等多重功能实现对全网文本、图片、视频舆情实时发现;
舆情预警:根据用户设置预警条件,判别舆情信息,并第一时间通过多渠道告知用户;
舆情分析:全网事件分析、事件分析、传播分析、竞品分析、评论分析、热度指数,6类大数据分析;
舆情报告:一键快速生成日、周、月、季度报告,自带行业舆情案例库,为舆情应对提供参考。

数据采集
开发平台:Java EE & SpringBoot
采集框架:Spider-flow & WebMagic & HttpClient
APP采集:Xposed框架
URL仓库:Redis
网页渲染解析:Jvppeteer & Playwright(微软开源)
web应用服务器:Nginx & Tomcat
储存任务发送:Kafka & Zookeeper
抓取任务发送:RabbitMQ
配置管理:MySQL
前端展示:Bootstrap & VUE
数据处理
开发框架:SpringBoot
开发语言:Java JEE
数据暂存:MySQL
数据索引:Redis
深度学习:PaddlePaddle
自然语言处理:HaNLP & THUCTC
数据处理和储存任务发送:Kafka & Zookeeper
数据中台:自研 & DataEase
数据初始化:集成FlyWay,自动初始化MySQL
数据总线:RockAPI (进行了二次开发)
数据分析
数据库:MySQL
数据检索:Elasticsearch
中文分词器:IK分词
相似度计算:Clickhouse
数据同步:DataX
文章储存:Mongodb
数据缓存:Redis
消息队列:kafak & rabbitMQ
开发框架:SpringBoot
开发语言:Java JEE
图表展示:Apache Echarts & anyCharts



项目地址:网页链接