配置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;
    }

}
相关推荐
Web极客码几秒前
如何在 Linux 中终止一个进程?
linux·运维·服务器
我爱学习好爱好爱23 分钟前
Docker Compose部署SpringBoot2+Vue3+redis项目(Rockylinux9.6)
redis·docker·容器
tzhou6445231 分钟前
Docker Compose 编排与 Harbor 私有仓库
运维·docker·容器
Clarence Liu36 分钟前
虚拟机与容器的差异与取舍
linux·后端·容器
A132470531244 分钟前
防火墙配置入门:保护你的服务器
linux·运维·服务器·网络
摇滚侠1 小时前
CentOS 7 Linux 离线安装 Docker:离线安装包、依赖文件、安装步骤
linux·docker·centos
Zzqqads1 小时前
vnc连接问题:Timed out waiting for a response from the computer
服务器
玖疯子1 小时前
JavaScript性能优化实战的技术文章大纲
服务器
计算机小手1 小时前
Kong + Konga 网关入门实践:Docker 部署、反向代理与插件使用指南
运维·经验分享·网络协议·docker·kong·开源软件
汪碧康2 小时前
【k8s-1.34.2安装部署】六.企业级部署cilium-1.18.4网络插件
网络·云原生·容器·kubernetes·k8s·cilium·xkube