以下情况说的,单播地址不通过rtp2httpd,直接potplayer,APTV都能正常播放
通过rtp2httpd 设置外部m3u(单播地址).使用playlist.m3u订阅得到的地址
http,单播源,hevc编码,网页播放器有声音无画面,APTV正常播放
http,单播源,h264编码,50FPS,网页播放器报错,APTV正常
播放错误
媒体错误: PipelineStatus::CHUNK_DEMUXER_ERROR_APPEND_FAILED: RunSegmentParserLoop: stream parsing failed. append_window_start=0 append_window_end=inf
rtsp单播源,h264,网页报错, APTV无法播放
播放错误
网络错误: HttpStatusCodeInvalid
这个rtsp报错的debug日志,我问了下AI,说是因为 OPTIONS 阶段导致的故障.
尝试修改User-Agent也没有效果
对比你提供的这两个地址,核心问题确实出在 IP 和请求机制上。
通过观察地址,我们可以得出结论:
能播的 URL 1 (122.191.50.135) 是**调度服务器(负载均衡)**的地址。
不能播的 URL 2 (122.191.52.171) 是某个具体的边缘节点的地址。
💡 为什么 URL 2 在 rtp2httpd 中不能播?
在 IPTV 架构中,标准的播放流程是:客户端请求调度器 ➔ 调度器校验 accountinfo ➔ 下发 302 重定向 ➔ 客户端带上动态生成的 &online=xxx 等参数去请求边缘节点。
rtp2httpd 的流程非常死板且标准。当你把边缘节点的地址直接喂给它时,它缺少了 &online= 参数,且使用了 rtp2httpd/3.12.2 这个非标准的 User-Agent。边缘节点(服务器标识为 HMS_V1R2)在收到它的 DESCRIBE 请求后,认为是不合规的“裸奔”请求,直接强行掐断了 TCP 连接。
PotPlayer 能播的原因:PotPlayer 底层是 FFmpeg(User-Agent 类似 Lavf59...),部分边缘节点对 FFmpeg 有特殊放行白名单,或者 PotPlayer 的请求顺序(跳过 OPTIONS 直接请求)恰好绕过了边缘节点的阻断机制。
这是导致失败的致命逻辑漏洞。
你看这段失败的日志:
2026/05/26 17:22:10 DEBUG [Worker 0] RTSP: Received complete header:
RTSP/1.0 200 OK
Session: 2728486233 <--- 注意!服务端在 OPTIONS 阶段就下发了 Session ID
2026/05/26 17:22:10 DEBUG [Worker 0] RTSP: Prepared request:
DESCRIBE rtsp://122.191.52.171/.... RTSP/1.0
CSeq: 2
User-Agent: rtp2httpd/3.12.2
Accept: application/sdp
<--- 注意!rtp2httpd 发送 DESCRIBE 时,没有把上面的 Session 传回去!
2026/05/26 17:22:10 INFO [Worker 0] RTSP: Server closed connection <--- 服务端认为状态机错误,直接切断!
为什么 PotPlayer 能播?
PotPlayer 底层的 FFmpeg 默认行为是:直接发送 DESCRIBE,甚至跳过 OPTIONS,或者如果收到了 Session 会严格携带。边缘节点如果没有在 OPTIONS 建立会话,直接收到 DESCRIBE 反而是可以正常返回媒体信息的。
如何修改(需要改源码):
你需要修改 rtp2httpd 中 RTSP 状态机(State Machine)的逻辑。
方法 A(粗暴有效):在建立 TCP 连接后,不要发送 OPTIONS 请求,直接把第一个请求替换为发送 DESCRIBE。
方法 B(修复 Bug):在代码解析 OPTIONS 响应头时,提取出 Session 的值,并在紧接着构造 DESCRIBE 请求体时,强行插入一行头信息:Session: 2728486233。
以下情况说的,单播地址不通过rtp2httpd,直接potplayer,APTV都能正常播放
通过rtp2httpd 设置外部m3u(单播地址).使用playlist.m3u订阅得到的地址
http,单播源,hevc编码,网页播放器有声音无画面,APTV正常播放
http,单播源,h264编码,50FPS,网页播放器报错,APTV正常
播放错误
媒体错误: PipelineStatus::CHUNK_DEMUXER_ERROR_APPEND_FAILED: RunSegmentParserLoop: stream parsing failed. append_window_start=0 append_window_end=inf
rtsp单播源,h264,网页报错, APTV无法播放
播放错误
网络错误: HttpStatusCodeInvalid
这个rtsp报错的debug日志,我问了下AI,说是因为 OPTIONS 阶段导致的故障.
尝试修改User-Agent也没有效果