SRS关闭无人观看的流

这里需要使用到SRS自身自带的钩子回调功能,配置文件中有标注:

Hook函数:

分为on_publish、on_play、on_stop、on_unpublish、on_dvr等类别;

其中主要介绍on_play、on_stop

on_play:

主要用于用户在对srs拉流进行播放的时候触发;

on_stop:

主要用于用户在停止播放的时候触发;

一、如何获取SRS发出的回调信息

要做到关闭无人观看的SRS流的话,需要一个http_server端来接收SRS所发出的http请求,并及时回复code:200, 否则SRS无法进行下一步的操作(放流或断流), 回复了SRS以后我们对信息进行解析即可获取到是用户断开了播放还是开始播放。

消息体如下:使用on_play举例

Body:
{"server_id": "vid-0xk989d","action": "on_play","client_id": "341w361a","ip": "127.0.0.1","vhost": "__defaultVhost__","app": "live","tcUrl": "rtmp://127.0.0.1:1935/live?vhost=__defaultVhost__","stream": "livestream","param": "","stream_url": "video.test.com/live/livestream","stream_id": "vid-124q9y3"
}

可以从上述json中的action字段看到是on_play,此时可以知道用户在拉流进行播放操作,如果用户断开播放或停止播放后,SRS会向http_server发出on_stop的信息告知用户已经停止播放。 

 二、如何对SRS进行配置,以达到SRS向指定的IP和端口发送http信息

vhost your_vhost {http_hooks {enabled         on;on_publish      http://127.0.0.1:8085/api/v1/on_publish;on_unpublish    http://127.0.0.1:8085/api/v1/on_unpublish;on_play         http://127.0.0.1:8085/api/v1/on_play;on_stop         http://127.0.0.1:8085/api/v1/on_stop;on_dvr          http://127.0.0.1:8085/api/v1/dvrs;on_hls          http://127.0.0.1:8085/api/v1/hls;on_hls_notify   http://127.0.0.1:8085/api/v1/hls/[app]/[stream]/[ts_url][param];}
}

 在SRS的配置文件中可以这样进行配置,IP和端口根据自己需求进行替换即可,如果需要https,那么直接将http替换为https即可。不需要的配置选项可以通过#符号注释掉

三、在http_server端关闭无人观看的音视频流

对SRS返回的http信息进行解析后,我们可以设置每路流的基础观看人数为0,若收到on_play信息则计数+1,收到on_stop那么计数-1即可。根据自己需求进行控制. 

四、注意事项

其中需要注意的有:

1、hls流要进行统计的话,需要打开一个配置文件参数叫hls_ctx的配置;

2、hls流在通过nginx代理过后,SRS则无法进行统计,因为hls比较特殊,是通过不断请求ts切片进行播放,所以会建立很多连接并断开,SRS内部为hls做了虚拟连接,但是这个虚拟连接会导致nginx的代理无效。以下是SRS的配置原话

        # Whether enable hls_ctx for HLS streaming, for which we create a "fake" connection for HTTP API and callback.# For each HLS streaming session, we use a child m3u8 with a session identified by query "hls_ctx", it simply# work as the session id.# Once the HLS streaming session is created, we will cleanup it when timeout in 2*hls_window seconds. So it# takes a long time period to identify the timeout.# Now we got a HLS stremaing session, just like RTMP/WebRTC/HTTP-FLV streaming, we're able to stat the session# as a "fake" connection, do HTTP callback when start playing the HLS streaming. You're able to do querying and# authentication.# Note that it will make NGINX edge cache always missed, so never enable HLS streaming if use NGINX edges.# Overwrite by env SRS_VHOST_HLS_HLS_CTX for all vhosts.# Default: onhls_ctx on;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十六进制数

1.做一个收电费程序,要求输入使用的电的度数(整数)以及电费单价(实数),输出总的用电费用。 2.提示并输入一个小写字母数据,输出其对应的ASCII值,以及该小写字母对应的大写字母。 3.提…

Spring设计模式之工厂模式创建Bean对象

BeanFactory和Application是Spring容器中创建和管理Bean对象的接口,但是它们的实现方式不同。 BeanFactory: BeanFactory采用延迟初始化策略,只有应用程序向容器请求特定的Bean时才创建该Bean对象。它的启动速度很快,但在程序运…

MySQL、Redis、Nginx配置优化

文章目录 一、MySQL二、Redis三、Nginx 一、MySQL mysql.cnf [mysqld] binlog_cache_size 128K thread_stack 256K join_buffer_size 2048K max_heap_table_size 512Mdefault_storage_engine InnoDB performance_schema_max_table_instances 400 table_definition_cach…

leetcode hot100组合综合四

本题中,是要求nums中求的总和为target的排列数,因为题中说了,元素顺序不同,则可以视为不同的结果之一。 所以,根据对背包问题的总结,本题中元素可以重复使用,是完全背包并且需要求排列数&#…

.net 微服务 服务保护 自动重试 Polly

1. 概要 实验服务保护,自动重新连接功能。 2.代码 2.1 重复工具 using Polly; using Polly.Retry; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks;namespace WebApplication2 {pu…

c# DotNetty

对于 .NET 开发者来说,DotNetty 是一个开源、高性能的网络库,它是对 Java 平台上流行的 Netty 异步事件驱动网络应用程序框架的一个端口。DotNetty 适用于创建各种网络应用程序,如 IoT (物联网)、游戏服务器以及消息传递系统等。 以下是对 Do…

Redis之缓存击穿问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 单例双检锁2. 缓存预热和定时任务 一、书接上文 Redis之缓存雪崩问题解决方案 二、介绍 缓存击穿就是大量并发访问同一个热点数据,一旦这个热点数据缓存失效,则请求压力都来到数据库。 三、解决方案 1…

Redis命令和Redisson对象匹配列表

大家好,Redisson系列再发一文。 多克创新国庆福利继续发,有需要的可以前往官网了解详情!!! Redis命令Redisson对象方法AUTHConfig.setPassword();APPENDRBinaryStream.getOutputStream().write()BITCOUNTRBitSet.ca…

嵌入式Qt 计算器核心算法_1

一.表达式分离算法分析 二.分离算法实现 QCalculatorDec.cpp #include "QCalculatorDec.h"#include <QDebug>QCalculatorDec::QCalculatorDec() {m_exp "";m_result "";QQueue<QString> r split("9.11 ( -3 - 1 ) * -5 &…

C#,整数转为短字符串(Short string)的加解密算法与源代码

1 整数转为短字符串的应用 网站生成的动态 URL 往往以内容序列号id为标识与参数&#xff0c;比如&#xff1a; http://www.jerry.com/tom.aspx?id1 使用 Web Rewrite&#xff0c;可以实现网页静态化&#xff0c;称为&#xff1a; http://www.jerry.com/content/1.html 对…

数学家的趣闻轶事15则

目录 前言趣闻轶事15则参考文献 前言 有人的地方就有江湖&#xff0c;有江湖的地方就有故事。数学本身就是一个江湖&#xff0c;这个江湖也充满着血雨腥风和侠骨柔情&#xff0c;至今流传着各种各样的传说&#xff0c;其中不乏”马踏江湖潇潇事“&#xff0c;也有"何当共…

Centos安装图形化桌面环境

1.使用root远程登录最小化安装的虚拟机 2.执行命令yum groupinstall "X Window System" 这是安装窗口系统 3.执行命令yum grouplist" 检查安装的软件可可以安装的软件 4.执行命令yum groupinstall "Server with GUI" 这是安装图形化界面 5.执行命令sy…

抛弃chatgpt,使用微软的Cursor提升coding效率

Whats Cursor? Cursor编辑器是一个基于GPT-4的代码编辑器&#xff0c;它可以根据用户的自然语言指令或者正在编辑的代码上下文为用户提供代码建议&#xff0c;支持多种编程语言&#xff0c;如Python、Java、C/C#、go等。Cursor编辑器还可以帮助用户重构、理解和优化代码&…

Mybatisplus 传参参数为自定义sql, 使用条件构造器作为参数

1 pom依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version> </dependency> 2 mapper 接口文件 List<TBookOrder> searchDiy(Param(Const…

centos docker jenkins 日志

在 CentOS 系统上运行 Docker 容器中的 Jenkins&#xff0c;查看日志的方法如下&#xff1a; 实时查看 Jenkins 容器的日志&#xff1a; 可以使用 docker logs 命令实时查看 Jenkins 容器的输出日志。 docker logs -f <jenkins_container_name_or_id>-f 参数表示跟随&…

P1605 迷宫

题目传送门&#xff1a;P1605 迷宫 前言 dfs迷宫题&#xff0c;是一道很好的练手模板题 这道题一定要回溯&#xff01;回溯&#xff01;&#xff01; 代码 #include<bits/stdc.h> using namespace std; int n,m,t; int sx,sy,fx,fy; int lx,ly; int a[10][10]{0},ans…

字符串变换最小字符串(C语言)

题目描述 给定一个字符串s&#xff0c;最多只能进行一次变换&#xff0c;返回变换后能得到的最小字符串&#xff08;按照字典序进行比较&#xff09;。 变换规则&#xff1a;交换字符串中任意两个不同位置的字符。 输入描述 一串小写字母组成的字符串s 输出描述 按照要求…

ADO.NET查询返回单个值

在ADO.NET中&#xff0c;如果你想要执行一个查询并返回单个值&#xff08;例如&#xff0c;一个聚合函数的结果或一个唯一记录的某个字段值&#xff09;&#xff0c;你可以使用SqlCommand对象的ExecuteScalar方法。ExecuteScalar方法返回查询结果集中的第一行的第一列的值&…

国内最全的AIGC大模型软件都是免费的,不比chatgpt香吗?我都为你准备好了,又可以提前下班了

无极低码 &#xff1a;https://wheart.cn 豆包(云雀大模型)、文心一言、悟空、星火、百度文库、360智脑、天宫AI、智谱清言(GLM大模型)、百川模型(百川智能)、日日新(商汤)、上海人工智能实验室&#xff08;书生通用大模型&#xff09;、夸克。 国内最全的AIGC大模型软件都是…

mysql 2-21

约束的分类 添加约束 查看表约束 非空约束 唯一性约束 复合的唯一性约束 只要有一个字段不重复&#xff0c;就可以添加成功 主键约束 自增列 mysql 8.0具有持久化&#xff0c;重启服务器会继续自增 外键约束 创建外键 关联必须有唯一性约束&#xff0c;或者是主键 约束等级 …