一、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'
钩子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;
}
}