前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >srs的http回调

srs的http回调

作者头像
阿超
发布2023-10-18 14:55:24
2940
发布2023-10-18 14:55:24
举报
文章被收录于专栏:快乐阿超快乐阿超

建筑在美貌上的爱情,一旦美貌消失,它也会随之消失。——堂恩

昨天说到 srs信令java版

今天按照官方文档实现http回调:

https://ossrs.net/lts/zh-cn/docs/v5/doc/http-callback

完整配置文件:

代码语言:javascript
复制
# WebRTC streaming config for SRS.
# @see full.conf for detail config.

listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;

http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}

http_api {
    enabled         on;
    listen          1985;
}
stats {
    network         0;
}
rtc_server {
    enabled on;
    listen 8000; # UDP port
    # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
    candidate $CANDIDATE;
}

vhost __defaultVhost__ {
    http_hooks {
            enabled         on;
            on_publish      http://host.docker.internal:1989/api/v1/streams http://host.docker.internal:1989/api/v1/streams;
            on_unpublish    http://host.docker.internal:1989/api/v1/streams http://host.docker.internal:1989/api/v1/streams;
            on_play         http://host.docker.internal:1989/api/v1/sessions http://host.docker.internal:1989/api/v1/sessions;
            on_stop         http://host.docker.internal:1989/api/v1/sessions http://host.docker.internal:1989/api/v1/sessions;
            on_dvr          http://host.docker.internal:1989/api/v1/dvrs http://host.docker.internal:1989/api/v1/dvrs;
            on_hls          http://host.docker.internal:1989/api/v1/hls http://host.docker.internal:1989/api/v1/hls;
            on_hls_notify   http://host.docker.internal:1989/api/v1/hls/[server_id]/[app]/[stream]/[ts_url][param];
    }
    rtc {
        enabled     on;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
        rtmp_to_rtc off;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
        rtc_to_rtmp off;
    }
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
    }
}

对应的docker命令:

代码语言:javascript
复制
docker run --rm --env CANDIDATE=$CANDIDATE -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp -v /Users/achao/IdeaProjects/srs/trunk/conf/rtc.conf:/usr/local/srs/conf/rtc.conf registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 objs/srs -c /usr/local/srs/conf/rtc.conf

然后我们的回调实现

代码语言:javascript
复制
package com.example.simplesrssignaling;

import lombok.Data;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

/**
 * /**
 * <pre>
 * <code>
 * http_hooks {
 *     enabled         on;
 *     on_publish      http://host.docker.internal:1989/api/v1/streams http://host.docker.internal:1989/api/v1/streams;
 *     on_unpublish    http://host.docker.internal:1989/api/v1/streams http://host.docker.internal:1989/api/v1/streams;
 *     on_play         http://host.docker.internal:1989/api/v1/sessions http://host.docker.internal:1989/api/v1/sessions;
 *     on_stop         http://host.docker.internal:1989/api/v1/sessions http://host.docker.internal:1989/api/v1/sessions;
 *     on_dvr          http://host.docker.internal:1989/api/v1/dvrs http://host.docker.internal:1989/api/v1/dvrs;
 *     on_hls          http://host.docker.internal:1989/api/v1/hls http://host.docker.internal:1989/api/v1/hls;
 *     on_hls_notify   http://host.docker.internal:1989/api/v1/hls/[server_id]/[app]/[stream]/[ts_url][param];
 * }
 * </code>
 * </pre>
 * use: docker run --rm --env CANDIDATE=$CANDIDATE -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp -v /Users/achao/IdeaProjects/srs/trunk/conf/rtc.conf:/usr/local/srs/conf/rtc.conf registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 objs/srs -c /usr/local/srs/conf/rtc.conf
 */
@RestController
@CrossOrigin
@RequestMapping("/api/v1")
public class SRSController {

    @PostMapping("/streams")
    public ResponseEntity<Response> handlePublishAndUnpublish(@RequestBody HookData data) {
        // Handle the on_publish and on_unpublish actions
        return ResponseEntity.ok(new Response(0));
    }

    @PostMapping("/sessions")
    public ResponseEntity<Response> handlePlayAndStop(@RequestBody HookData data) {
        // Handle the on_play and on_stop actions
        return ResponseEntity.ok(new Response(0));
    }

    @PostMapping("/dvrs")
    public ResponseEntity<Response> handleDVR(@RequestBody HookData data) {
        // Handle the on_dvr action
        return ResponseEntity.ok(new Response(0));
    }

    @PostMapping("/hls")
    public ResponseEntity<Response> handleHLS(@RequestBody HookData data) {
        // Handle the on_hls action
        return ResponseEntity.ok(new Response(0));
    }

    @Data
    public static class HookData {
        private String action;
        private String client_id;
        private String ip;
        private String vhost;
        private String app;
        private String stream;
        private String param;
    }

    @Data
    public static class Response {
        private Integer code;
        private String msg;

        public Response(int code) {
            this.code = code;
            this.msg = "ok";
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档