-
Notifications
You must be signed in to change notification settings - Fork 253
Description
从日志分析,这是一个通过HTTP转RTSP协议进行电视回看(catchup)的请求过程,但最终在PLAY阶段失败,服务器返回 455 Method Not Valid in this State。以下是详细分析:
一、流程概述
客户端请求
客户端 192.168.1.235 请求 URL:/本地频道/CCTV16/超高清/catchup?playseek=20260317004643-20260317010310
携带 playseek 参数,表示回看的时间范围:2026-03-17 00:46:43 到 2026-03-17 01:03:10。
RTSP 代理转换
程序将 HTTP 请求映射到 RTSP 源,基础 URL 为 rtsp://*****:554/...,并追加 playseek 参数。
多次重定向(302)
经过三次重定向,最终到达实际媒体服务器:
第一次重定向到 125.*:554
第二次重定向到 125.*:554
第三次重定向到 125*:1554(或 .117,交替出现)
每次重定向都会更新 URL 中的参数(如 iptvsessionid、crypt 等),但保留了 playseek 语义。
RTSP 交互
OPTIONS:成功,服务器支持 DESCRIBE, SETUP, TEARDOWN, PLAY, ...(最后一台服务器支持完整方法集)。
DESCRIBE:成功,返回 SDP,包含媒体信息:
视频轨道:MP2T/90000,control:trackID=2
关键属性:
text
a=x-ZMSSTimeShiftLift:0 // 时移能力为 0(可能不支持时移)
a=x-ZMSSCCStartTime:20251104T034012 // 节目开始时间
a=slicetime:1800 // 切片时长 1800 秒(30分钟)
SETUP:成功,选择 UDP 传输,分配客户端端口,服务器确认。
PLAY:发送 Range: clock=20260317T004643Z-,服务器返回 455 Method Not Valid in this State。
从日志中提取的关键错误信息如下:
RTSP 错误代码 455
错误描述:Method Not Valid in this State(方法在当前状态下无效)
发生位置:每次 PLAY 请求后,服务器返回该错误。
示例日志行:
text
09:03:20 ERROR [Worker 0] RTSP: Server returned error code 455
09:03:20 DEBUG [Worker 0] RTSP: Received complete header:
RTSP/1.0 455 Method Not Valid in this State
Server: ZMSS_ChinaTelcom2.2
CSeq: 10
Session:
重定向过程成功但最终播放失败
客户端依次经历了三次重定向(从 125..x → 1251.x → 125.8.x → 125..x 或 125.x),最终连接到时移服务器(ZMSS_ChinaTelcom2.2)。
SETUP 阶段成功建立 UDP 传输通道,但 PLAY 请求携带的 Range: clock=20260317T004643Z- 时移参数被服务器拒绝。
可能的原因
请求的时移时间范围无效(例如超出可回溯时长)。
服务器不支持基于 clock 的 Range 参数,或该频道未开启时移功能。
会话状态异常(SETUP 成功但 PLAY 时状态不匹配)。
客户端行为
在收到 455 错误后,客户端自动清理会话并重试,但连续四次均以相同错误失败(对应四个不同端口号:53348~53351)。
总结:核心报错是 RTSP 455 Method Not Valid in this State,表明服务器拒绝执行时移播放请求。需要检查时移参数格式、频道时移权限或服务器端配置。