SRS视频服务器CallBack的Demo
1.安装环境(很麻烦,可以选择编译启动)
官方文档快速开始docker配置:
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -d\
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/docker.conf
因为我们需要修改配置文件,故改造使用挂载方式:
如果你不喜欢挂载,这种让人无语的麻烦操作,可以在容器内安装vim等工具直接修改
先创建一个容器
docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 -d \
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/docker.conf
进入docker内部,查看配置文件位置
docker exec -it 容器名 bash
使用docker cp命令将conf复制到外部宿主机上
docker cp 容器名:/usr/local/srs/conf /soft/srs/
挂载外部conf目录,运行
docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 -d \
-v /soft/srs/conf:/usr/local/srs/conf \
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4
2.编写回调接口
使用POST,在官方文档上有callback的请求的详细参数
新建一个springboot工程,创建一个post接口,端口设置为8085(自行设置)
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@ResponseBody
public class CallBackController {
@PostMapping("/authenticat")
public int authenticat(){
int temp=(int) (Math.random() * 2);
System.out.println("有新的连接"+temp);
return temp;
}
}
将项目打包成jar,直接部署在测试服务器上
java -jar xxx.jar
3.配置SRS
注意,在上面我们运行时,使用的是docker.conf,所以我们需要在此文件中进行配置的修改
Q:不知道是不是作者的疏忽还是什么,如果你进入conf目录,你会发现conf下除了许多许多的配置文件外,还包含着一个conf文件夹,该文件夹下包含着同样的配置文件,我们在启动中使用的外层的conf文件。
打开docker.conf,修改配置
注意:本人测试使用localhost或者127.0.0.1无法访问接口,使用公网ip即可进行接口调用(还需要在防火墙打开对应端口,本人测试如果不打开端口仍无法调用)如果该问题有较好解答请赐教
#上面省略
vhost __defaultVhost__ {
#上面省略
http_hooks {
enabled on;
#推流时,需要回调该接口
on_publish http://公网ip:8085/authenticat;
#on_unpublish http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams;
#on_play http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;
#on_stop http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;
#on_dvr http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs;
#on_hls http://127.0.0.1:8085/api/v1/hls http://localhost:8085/api/v1/hls;
#on_hls_notify http://127.0.0.1:8085/api/v1/hls/[app]/[stream]/[ts_url][param];
}
}
4.测试
重启SRS
docker restart xxx
打开网页控制台:ip:8080
连接SRS,端口号:1985
使用OBS推流
查看springboot控制台和obs推流情况
OBS在Callback验证不通过时会显示端口连接
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.12.RELEASE) 2022-12-21 21:28:53.160 INFO 6850 --- [ main] com.zko0.SrsCallBackDemoApplication : Starting SrsCallBackDemoApplication v0.0.1-SNAPSHOT on VM-24-4-centos with PID 6850 (/SrsCallBack/SrsCallBackDemo-0.0.1-SNAPSHOT.jar started by root in /SrsCallBack)
2022-12-21 21:28:53.164 INFO 6850 --- [ main] com.zko0.SrsCallBackDemoApplication : No active profile set, falling back to default profiles: default
2022-12-21 21:28:54.836 INFO 6850 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8085 (http)
2022-12-21 21:28:54.853 INFO 6850 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-12-21 21:28:54.853 INFO 6850 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.46]
2022-12-21 21:28:54.945 INFO 6850 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-12-21 21:28:54.945 INFO 6850 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1615 ms
2022-12-21 21:28:55.216 INFO 6850 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2022-12-21 21:28:55.507 INFO 6850 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8085 (http) with context path ''
2022-12-21 21:28:55.524 INFO 6850 --- [ main] com.zko0.SrsCallBackDemoApplication : Started SrsCallBackDemoApplication in 3.035 seconds (JVM running for 3.642)
2022-12-21 21:29:05.543 INFO 6850 --- [nio-8085-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-12-21 21:29:05.543 INFO 6850 --- [nio-8085-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-12-21 21:29:05.551 INFO 6850 --- [nio-8085-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 8 ms
有新的连接0
有新的连接0
有新的连接0
有新的连接0
有新的连接1
SRS视频服务器CallBack的Demo的更多相关文章
- 基于mjpg_streamer视频服务器移植【转】
本文转载自:http://blog.csdn.net/wavemcu/article/details/7539560 MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名 ...
- python socket之tcp服务器与客户端demo
python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...
- 为SRS流媒体服务器添加HLS加密功能(附源码)
为SRS流媒体服务器添加HLS加密功能(附源码) 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做 ...
- dash视频服务器本地搭建 (初探)
2019-4-17 15:54:17 星期三 技术说明: dash: 将一个大视频分解成不同分辨率, 不同清晰度的小视频, 以及一个描述文件(后缀: mpd), 根据网络带宽自动调整视频流, 看起来更 ...
- 嵌入式Linux的web视频服务器的构建
http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...
- 基于mjpg-streamer网络视频服务器移植
MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名. MJPEG 全名为 "Motion Joint Photographic Experts Group&q ...
- 基于JT/T 1078协议设计和开发部标视频服务器
交通部与2016年10月份推出了JT/T 1078-2016标准,全称是<道路运输车辆卫星定位系统视频通信协议>.该标准将改变以往两客一危车辆的视频监控设备通信协议都是设备厂商私有协议的局 ...
- YOLO2:实时目标检测视频教程,视频演示, Android Demo ,开源教学项目,论文。
实时目标检测和分类 GIF 图: 视频截图: 论文: https://arxiv.org/pdf/1506.02640.pdf https://arxiv.org/pdf/1612.08242.pdf ...
- SRS流媒体服务器搭建+ffmpeg推流VLC取流观看
一.编译SRS https://github.com/winlinvip/simple-rtmp-server 目前有1.0-release.2.0.3.0等版本 2.0官方文档地址:https:// ...
- 在ubuntu16.04上搭建视频服务器
推荐方案三:超级简单 方案一.hls (缺陷:需要花很多时间切片) 1.Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release ...
随机推荐
- Go语言书籍推荐
附录: 其他书籍的介绍:https://github.com/golang/go/wiki/Books Go程序设计语言 (圣经) 作者 艾伦 A.A.多诺万 Kernighan 下载地址 中文版PD ...
- 某厂面试:如何优雅使用 SPI 机制
代码不多,文章可能有点长.朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程 产出背景 因为最近项目中使用分库分表以及数据加密使用到了 S ...
- PHP 正在“杀死”Python
最近,我突然发现自己好像又在逆潮流而动.可能我的想法与很多朋友不同,我认为 PHP 这个编程语言界的"混蛋"比以往任何时候都更受欢迎. 或许你会质疑--PHP 不是已经完蛋了吗?市 ...
- 注册IBMlinuxone并使用xshell登陆
登陆地址:https://linuxone.cloud.marist.edu/#/login 注册地址:https://linuxone.cloud.marist.edu/#/register?fla ...
- 基于python的数学建模---多模糊评价
权重 ak的确定--频数统计法 选取正整数p的方法 画箱形图 取1/4与3/4的距离(IQR) ceil()取整 代码: import numpy as np def frequency(mat ...
- i春秋破译
点开题目就是一段密文 TW5650Y - 0TS UZ50S S0V LZW UZ50WKW 9505KL4G 1X WVMUSL510 S001M0UWV 910VSG S0 WFLW0K510 1 ...
- docker给已存在的容器添加或修改端口映射
简述: 这几天研究了一下docker, 发现建立完一个容器后不能增加端口映射了,因为 docker run -p 有 -p 参数,但是 docker start 没有 -p 参数,让我很苦恼,无奈谷歌 ...
- 《HTTP权威指南》– 16.重定向与负载均衡
重定向 重定向 的目标是尽快地将HTTP报文发送到可用的Web服务器上去.在穿过因特网的路径上,HTTP报文传输的方向会受到HTTP应用程序和报文经由的路由设备的影响: 配置创建客户端报文的浏览器应用 ...
- 什么是Auth模块?(全面了解)
目录 一:Auth模块 1.什么是Auth模块? 2.Auth模块作用 二:引入Auth模块 1.其实我们在创建好一个Django项目之后直接执行数据库迁移命令会自动生成很多表 2.django在启动 ...
- 过滤器 Filter 与 拦截器 Interceptor 的区别
引言 说起 Filter 与 Interceptor 的区别,相信很多同学第一感觉就是容易.简单! 毕竟开发中这两个组件使用频率较高,用法也较简单.然后真回答起来有答不出个所以然来,场面尴尬,老丢脸了 ...