回看和时移的实现方式都一样,通过修改播放源地址的链接,追加时间段参数,达到请求服务器输出历史视频的功能,

时间段分两种:UTC yyyyMMddHHmmss 或 13位绝对毫秒级时间戳

字段分: start / starttime / playseek / lookback

  1. m3u格式的

    看m3u文件顶部,有没有catchup="append" catchup-source="?playbackbegin=${(b)yyyyMMddHHmmss}&playbackend=${(e)yyyyMMddHHmmss}"

    只需要根据catchup-source的参数格式在原播放地址后面拼接回放时间段,样本如下:

  2. prism-highlight prism-bash
    #EXTM3U x-tvg-url="https://mg.28985.xyz:2026/playback.xml" catchup="append" catchup-source="?playbackbegin=${(b)yyyyMMddHHmmss}&playbackend=${(e)yyyyMMddHHmmss}"
    #EXTINF:-1 tvg-id="CCTV1综合" tvg-name="CCTV1综合" tvg-logo="http://wapx.cmvideo.cn:8080/publish/poms/image/2201/057/821/202204010054_1626677671392_H32_1080.webp" group-title="央视",CCTV1综合
    https://mg.28985.xyz:2026/608807420
    #EXTINF:-1 tvg-id="CCTV2财经" tvg-name="CCTV2财经" tvg-logo="http://wapx.cmvideo.cn:8080/publish/poms/image/5500/346/945/202205311432_1626678578843_H32_1080.webp" group-title="央视",CCTV2财经
    https://mg.28985.xyz:2026/631780532
  3. PLTV/TVOD格式

    如果源地址中包含PLTV或TVOD,即符合这种格式,

    1. 若包含 "rtsp":认为是 RTSP-smil 代理流,强制替换为 "/TVOD/",时间使用 UTC 格式化为 yyyyMMddHHmmss(不含 "T" / ".00Z"),追加参数:?playseek={begin_UTC}-{end_UTC};

    2. 若不包含 "rtsp":时间使用 13 位绝对毫秒级时间戳,追加参数:?starttime={begin_ms}&endtime={end_ms}。

    样本如下:

  4. prism-highlight prism-bash
    http://bt.66.xyz:8887/rtsp/115.233.43.70/PLTV/88888913/224/3221228083/10000100000000060000000002633372_0.smil
  5. RTSP格式

    如果源地址中同时包含rtsp和r2h-token,则符合这种格式,

    把源地址中的r2h-token= 改为r2h-token: 然后再追加回放时间段,格式为?playseek={yyyyMMddHHmmss}-{yyyyMMddHHmmss},样本如下:

  6. prism-highlight prism-bash
    http://iptvcun.cc:5140/rtsp/123.147.112.17:8089/04000001/01000000004000000000000000000231?AuthInfo=xxx&userid=&r2h-token=Lj@45430770
    转换后:
    http://iptvcun.cc:5140/rtsp/123.147.112.17:8089/04000001/01000000004000000000000000000231?AuthInfo=xxx&userid=&r2h-token:Lj@45430770?playseek=20260722101011-20260722101050
  7. Ysten 易视腾

    包含 "ysten-business",即视为此格式

    1. 将 URL 路径中的 "/live" 替换为 "/lookback";

    2. 时间转换为 UTC 格式,格式化为 yyyyMMdd'T'HHmmss'.00Z';

    3. 拼接输出:.../lookback/{begin_UTC}/{end_UTC}/{channel_id}。

  8. Migu 咪咕

    包含 "itv.cmvideo.cn"或 "channel-id="

    1. 将查询参数中的 &livemode=1 替换为 &livemode=4(切至回看模式);

    2. 移除签名尾部的 "==";

    3. 时间转换为 UTC 格式,格式化为 yyyyMMdd'T'HHmmss'.00Z';

    4. 在尾部追加拼接参数:&playseek={begin_UTC}-{end_UTC}(时移模式下结束时间自动减去 60 秒安全缓冲)。

  9. 爱上 CDN

    包含 "aishang.ctlcdn"

    1. 将 URL 中的路径字符 "/live" 替换为 "/lb";

    2. 时间转换为 13 位绝对毫秒级时间戳;

    3. 追加拼接参数:?start={begin_ms}&end={end_ms}。

  10. Suma 数码视讯

    包含 "/live/program/live/"

    1. 时间使用 13 位绝对毫秒时间戳;

    2. 追加拼接参数:?starttime={begin_ms}&endtime={end_ms}。

  11. CMS

    包含 "/cms001/"

    1. 时间使用 13 位绝对毫秒时间戳;追加拼接参数:?playseek={begin_str}-{end_str}