配置srs的鉴权时遇到的问题

一、docker容器的日志相关
1、查看完整的SRS启动日志
复制代码
docker logs srs4

或者 捕获 SRS 的实时日志

docker logs -f srs4

或者 前30条

docker logs srs4 | head -30
2、查看SRS进程的详细信息,包括工作目录
复制代码
docker exec -it srs4 pwd

docker exec -it srs4 ls -la /usr/local/srs/conf/
3、清除docker的srs容器的日志

定位日志文件:Docker 容器的日志文件通常保存在宿主机的 /var/lib/docker/containers/ 目录下。使用以下命令精确查找名为 srs4 的容器的日志文件位置:

复制代码
docker inspect --format='{{.LogPath}}' srs4

清空日志内容:找到路径后,使用 truncate 命令清空内容更为安全。

将 <LogPath> 替换为上一条命令得到的实际路径

复制代码
sudo truncate -s 0 <LogPath>
二、SRS鉴权回调中遇到的一些问题:

官方文档:HTTP回调 | SRS

请求token(示例):

复制代码
curl --request GET   --url http://192.168.2.131:8888/api/qris/webrtc/token/test001   --header 'Accept: */*'   --header 'Accept-Encoding: gzip, deflate, br'   --header 'Blade-Auth: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJibGFkZXguY24iLCJhdWQiOlsiYmxhZGV4Il0sInRva2VuX3R5cGUiOiJhY2Nlc3NfdG9rZW4iLCJjbGllbnRfaWQiOiJzYWJlciIsInRlbmFudF9pZCI6IjAwMDAwMCIsInVzZXJfaWQiOiIxMTIzNTk4ODIxNzM4Njc1MjAxIiwiZGVwdF9pZCI6IjExMjM1OTg4MTM3Mzg2NzUyMDEiLCJwb3N0X2lkIjoiMTEyMzU5ODgxNzczODY3NTIwMSIsInJvbGVfaWQiOiIxMTIzNTk4ODE2NzM4Njc1MjAxIiwiYWNjb3VudCI6ImFkbWluIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiLnrqHnkIblkZgiLCJyZWFsX25hbWUiOiLnrqHnkIblkZgiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwiZGV0YWlsIjp7InR5cGUiOiJ3ZWIifSwiZXhwIjoxNzY0OTE5MTI0LCJuYmYiOjE3NjQ5MTU0NjR9.syLvcpD4TqbEPjHVJsAGxxDErHGHxceQRso3PcAkeDA'   --header 'Blade-Requested-With: BladeHttpRequest'   --header 'Connection: keep-alive'

WHEP请求(示例):http://117.172.165.201:1985/rtc/v1/whep/?app=live&stream=livestream&token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0MDAxIiwiY2xpZW50X2lwIjoiNjEuMTU3LjE4MS42MCIsInRpbWVzdGFtcCI6MTc2NDkyMjE5NzA4OSwiZXhwIjoxNzY0OTIyNzk3fQ.PsHsq5yc4RUKg6Fww1RRv0vqCsoZYgj1FSs7M6im7cY

钩子URL(示例): http://192.168.2.131:8888/api/qris/webrtc/validate (这是业务后端自定义的接口)

复制代码
curl --request POST \
  --url http://192.168.2.131:8888/api/qris/webrtc/validate \
  --header 'Connection: keep-alive' \
  --header 'Content-Type: application/json' \
  --data '{
    "action": "on_play",
    "client_id": "9308h583",
    "ip": "61.157.181.60",
    "vhost": "__defaultVhost__",
    "app": "live",
    "stream": "livestream",
    "param": "?token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0MDAxIiwiY2xpZW50X2lwIjoiNjEuMTU3LjE4MS42MCIsInRpbWVzdGFtcCI6MTc2NDkyMzM1MTM0OSwiZXhwIjoxNzY0OTIzOTUxfQ.fqXhSZ7iW6nyxi6_8H_iiZ1t9MVyXX_tN9PujUeZJfM&salt=yyy",
    "pageUrl": "XXXX",
    "server_id": "vid-werty",
    "stream_url": "video.test.com/live/livestream",
    "stream_id": "vid-124q9y3"
  }'

响应(示例):检查钩子服务器(api/qris/webrtc/validate)返回的响应格式是否符合SRS的期望:

复制代码
成功允许播放的响应:{"code": 0}

拒绝播放的响应:{"code": 1}
三、检查钩子服务器的接口是否可达

确保SRS服务器能够正常访问钩子服务器(是srs的回调接口):

1、从SRS服务器测试钩子服务器连通性
复制代码
curl -v -X POST http://192.168.2.131:8888/api/qris/webrtc/validate

表明该接口可以响应,但请求体格式不对。

2、对应的on_play钩子的请求参数示例:

复制代码
{
    "action": "on_play",
    "client_id": "9308h583",
    "ip": "192.168.1.10", "vhost": "video.test.com", "app": "live",
    "stream": "livestream", "param":"?token=xxx&salt=yyy",
    "pageUrl": "http://www.test.com/live.html", "server_id": "vid-werty",
    "stream_url": "video.test.com/live/livestream", "stream_id": "vid-124q9y3"
}
2、查看SRS启动时的详细日志,确认加载的配置文件
复制代码
docker logs srs4 | grep "config file\|conf:"
3、检查是否有docker.conf文件
复制代码
docker exec -it srs4 cat /usr/local/srs/conf/docker.conf
4、启动docker时,拷贝docker.conf的内容,加入http回调,将配置文件挂载到容器
复制代码
docker run -d \
  --name srs4 \
  -p 1935:1935 \
  -p 8081:8080 \
  -p 1985:1985 \
  -p 5060:5060 \
  -p 9000:9000 \
  -p 10080:10080/udp \
  -p 8000:8000/udp \
  -v /root/srs_backup/conf/docker.conf:/usr/local/srs/conf/docker.conf \
  ossrs/srs:latest
5、检查SRS是否真的加载了http_hooks配置
复制代码
docker logs srs4 | grep -i "hook"
或者
docker logs srs4 | grep -i "hook\|callback\|whep\|play"
6、 查看SRS容器内的docker.conf实际配置信息(挂载后的)
复制代码
docker exec -it srs4 cat /usr/local/srs/conf/docker.conf

示例:

复制代码
# docker config for srs.
# @see full.conf for detail config.

listen              1935;
max_connections     1000;
# For docker, please use docker logs to manage the logs of SRS.
# See https://docs.docker.com/config/containers/logging/
srs_log_tank        console;
daemon              off;
http_api {
    enabled         on;
    listen          1985;
}
http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}
rtc_server {
    enabled on;
    listen 8000;
    # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
    candidate $CANDIDATE;
}
vhost __defaultVhost__ {
    hls {
        enabled         on;
    }
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
    }
    rtc {
        enabled     on;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
        rtmp_to_rtc on;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
        rtc_to_rtmp on;
    }
    http_hooks {
        enabled    on;
        #on_play http://127.0.0.1:8888/api/qris/webrtc/validate  http://117.172.165.201:8888/api/qris/webrtc/validate http://host.docker.internal:8888/api/qris/webrtc/validate;
        #on_play http://host.docker.internal:8888/api/qris/webrtc/validate;
        #on_play http://117.172.165.201:8888/api/qris/webrtc/validate;
        on_play http://192.168.2.131:8888/api/qris/webrtc/validate;
    }
}
7、 查看SRS容器内的srs.conf实际配置信息(未挂载的)
复制代码
# main config for srs.
# @see full.conf for detail config.

listen              1935;
max_connections     1000;
#srs_log_tank        file;
#srs_log_file        ./objs/srs.log;
daemon              on;
http_api {
    enabled         on;
    listen          1985;
}
http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}
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__ {
    hls {
        enabled         on;
    }
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
    }
    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;
    }

    play{
        gop_cache_max_frames 2500;
    }
}
8、 查看SRS容器内的srs.conf实际配置信息(挂载的)
复制代码
listen              1935;
max_connections     1000;

# HTTP API(1985)+ 静态页面(8080)
http_api {
    enabled         on;
    listen          1985;
    #listen          127.0.0.1:1985;  # 只允许本地访问
    crossdomain     on;  #新增
    allow_reuse_vhost on;
}
http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}

# WebRTC(RTC)服务:信令走 1985,媒体走 8000(UDP)
rtc_server {
    enabled         on;
    listen          8000;              # UDP 端口

    candidate       117.172.165.201;           # 公网 IP 或域名
}

# 默认虚拟主机:开启 WebRTC,建议关 B 帧降低延迟
vhost __defaultVhost__ {
    # RTMP应用配置
    rtmp{
        enabled on;
        application live{
          live on;
      }
    }
    # RTC 配置
    rtc {
        enabled     on;
        bframe      off;
        # 实现协议互通
        rtc_to_rtmp on;
        rtmp_to_rtc on;
    }
    http_hooks {
        enabled    on;
        #on_play http://127.0.0.1:8888/api/qris/webrtc/validate  http://117.172.165.201:8888/api/qris/webrtc/validate http://host.docker.internal:8888/api/qris/webrtc/validate;
        #on_play http://host.docker.internal:8888/api/qris/webrtc/validate;
        #on_play http://117.172.165.201:8888/api/qris/webrtc/validate;
        on_play http://192.168.2.131:3000/api/qris/webrtc/validate;
    }

}
相关推荐
wanhengidc9 小时前
云手机 网络连接与持续性的表现如何
运维·服务器·科技·游戏·智能手机
代码不行的搬运工9 小时前
RFC6811:BGP前缀源验证
运维·服务器·bgp网络
Archie_IT9 小时前
openEuler 软件生态深度勘探:从六万软件包到多语言融合
linux·容器·性能测试·openeuler·多语言开发
tokepson10 小时前
香橙派AI Pro个人云平台 - 从零搭建全记录
linux·服务器·技术·记录
❀͜͡傀儡师10 小时前
K8s 部署Doris 高可用集群
云原生·容器·kubernetes
月亮!10 小时前
移动端测试重磅升级:跨平台自动化测试框架深度对比
运维·网络·人工智能·测试工具·容器·自动化·测试用例
凯子坚持 c11 小时前
Docker 容器全生命周期管理与运维命令深度解析
运维·docker·php
java_logo12 小时前
MILVUS Docker 容器化部署指南
运维·人工智能·docker·容器·prometheus·milvus
箬敏伊儿12 小时前
Apple M2 + Docker + MySQL 轻量配置全教程
数据库·mysql·docker