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等工具直接修改

  1. 先创建一个容器

    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
  2. 进入docker内部,查看配置文件位置

    docker exec -it 容器名 bash
  3. 使用docker cp命令将conf复制到外部宿主机上

    docker cp 容器名:/usr/local/srs/conf /soft/srs/
  4. 挂载外部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.测试

  1. 重启SRS

    docker restart xxx
  2. 打开网页控制台:ip:8080

  3. 连接SRS,端口号:1985

  4. 使用OBS推流

  5. 查看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的更多相关文章

  1. 基于mjpg_streamer视频服务器移植【转】

    本文转载自:http://blog.csdn.net/wavemcu/article/details/7539560 MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名 ...

  2. python socket之tcp服务器与客户端demo

    python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...

  3. 为SRS流媒体服务器添加HLS加密功能(附源码)

    为SRS流媒体服务器添加HLS加密功能(附源码) 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做 ...

  4. dash视频服务器本地搭建 (初探)

    2019-4-17 15:54:17 星期三 技术说明: dash: 将一个大视频分解成不同分辨率, 不同清晰度的小视频, 以及一个描述文件(后缀: mpd), 根据网络带宽自动调整视频流, 看起来更 ...

  5. 嵌入式Linux的web视频服务器的构建

    http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...

  6. 基于mjpg-streamer网络视频服务器移植

    MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名. MJPEG 全名为 "Motion Joint Photographic Experts Group&q ...

  7. 基于JT/T 1078协议设计和开发部标视频服务器

    交通部与2016年10月份推出了JT/T 1078-2016标准,全称是<道路运输车辆卫星定位系统视频通信协议>.该标准将改变以往两客一危车辆的视频监控设备通信协议都是设备厂商私有协议的局 ...

  8. YOLO2:实时目标检测视频教程,视频演示, Android Demo ,开源教学项目,论文。

    实时目标检测和分类 GIF 图: 视频截图: 论文: https://arxiv.org/pdf/1506.02640.pdf https://arxiv.org/pdf/1612.08242.pdf ...

  9. SRS流媒体服务器搭建+ffmpeg推流VLC取流观看

    一.编译SRS https://github.com/winlinvip/simple-rtmp-server 目前有1.0-release.2.0.3.0等版本 2.0官方文档地址:https:// ...

  10. 在ubuntu16.04上搭建视频服务器

    推荐方案三:超级简单 方案一.hls (缺陷:需要花很多时间切片) 1.Distributor ID: Ubuntu  Description: Ubuntu 16.04.3 LTS  Release ...

随机推荐

  1. Kubernetes安装GitLab

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github‍:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying Kubernetes安装GitLab Step 1 ...

  2. 【云原生 · Kubernetes】部署博客系统

    [云原生 · Kubernetes]Kubernetes运维 接着上次的内容,后续来了! (1)配置NFS服务 master节点安装NFS与RPC服务: # yum install -y nfs-ut ...

  3. Leetcode 799.香槟塔:动态规划+递归

    香槟塔:动态规划+递归 题目来源:Leetcode 22/11/20每日一题:799.香槟塔 https://leetcode.cn/problems/champagne-tower 我们把玻璃杯摆成 ...

  4. (C++) C++ template笔记 -- template关键字及typename关键字

    在调用C++ template函数时,有时候语法会存在歧义. 调用函数时,使用 obj.template func<...>() 形式的语法,避免歧义: 调用类型时,使用嵌入子类型时,使用 ...

  5. Devexpress控件pivotGridControl显示字段面板

    可在窗口加载的时候使用函数 pivotGridControl1.ShowCustomization(); 大家如果有问题可以 Console.WriteLine("加群"+&quo ...

  6. Boolean.getBoolean() 与 Boolean.parseBoolean()

    1. 问题回顾 当在不了解 Boolean 中的 getBoolean() 方法与 parseBoolean() 方法的区别时,在使用过程中就会出现不明所以的bug. 比如如下使用情况: // isA ...

  7. Springboot配置多Redis源

    Springboot配置多Redis源 一.背景 因项目部署了新集群,某些缓存数据需要在旧的redis上取,就必须配置多个数据源动态获取相对应的源以兼容业务. 二.配置依赖 <dependenc ...

  8. 对于async和await的使用方式、作用效果不怎么理解 ?没关系,初步看这篇就够了

    结论 同步还是异步,区别如下: 同步:你使用 await 修饰符去调用一个异步(async)方法(是异步方法,不过是阻塞式的,可简单理解为同步): 异步:你获取异步方法返回的 Task,就是异步(后文 ...

  9. Jmeter 之连接数据库

    1.下载mysql-connector-java-5.1.7-bin.jar 2.下载后将该jar包放于bin目录下,如:D:\Program Files\apache-jmeter-5.2\bin ...

  10. vue3+ts 全局事件总线mitt

    Mitt 在vue3中 $ on,$off 和 $once 实例方法已被移除,组件实例不再实现事件触发接口,因此大家熟悉的EventBus便无法使用了.然而我们习惯了使用EventBus,对于这种情况 ...