Skip to content

【分享】RTSP点播源通过日志获取时长进行快进快退操作 #535

@ttttr885

Description

@ttttr885

目前对RTSP点播源在TVBOX上的播放,都是通过定制化的TVBOX播放器实现,不具有通用性。通过观察,发现调试日志能读取到RTSP流的时长信息,如果在服务器加一步PY代理,由PY生成R2H专用的M3U,则可以解决播放器通用问题 。
思路:生成一个代理地址,由代理的PY专门对代理地址进行解析并返回给播放器。

实现的方法: 基于25.12的ImmortalWrt
1.修改源生成的地址,让代理PY工作
proxy_url = 'http://192.168.100.1:8888/stream/' + encoded + '.m3u8'
_log(f'[播放] 返回代理地址: {proxy_url}')
return Response(json.dumps({
'parse': 0,
'url': proxy_url,
'header': '',
'msg': ''

2.获取时长:用SYSLOG-NG插件,从调试日志中获取类似a=range:npt=0-2150日志 保存到临时文件中,修改配置文件如下:
只匹配 rtp2httpd 中包含 a=range:npt 的行--
filter f_rtp2httpd_duration {
program("rtp2httpd") and match("a=range:npt");
};

输出:rtp2httpd 的时长日志(纯文本,方便代理脚本读取)--
destination d_rtp2httpd {
file("/tmp/rtp2httpd.log" flush_lines(1));
};
3.编写PY,让PY根据获取到的时长来进行代理解析,生成TVBOX的链接,此步可由DEEPSEEK实现。最终实现的 M3U文件如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5,
http://192.168.100.1:8888/stream/-----------.ts?start=0
#EXTINF:5,
http://192.168.100.1:8888/stream/-----------.ts?start=5

整体试下来,稳定性尚可,快进的时候需要等待一会儿,但摆脱了对播放的依赖,任何一个版本的TVBOX均能播放,算是在魔改播放器外另外一个解决方法。

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions