书接上回
(资料图片仅供参考)
辽宁电信部分地区IPTV回看方法 - 哔哩哔哩 (bilibili.com)
参考上面那篇文章的方法,把频道的单播地址复制出来
之后照例是替换。第一步,在”?"前面加上”/1000.m3u8“,也就成了
接着把那些变量值固定的GET参数写好
固定变量值的就这些,直接加到地址末尾,变成
之后两个需要你自己设置值的GET参数,分别为“playseek”和“zte_offset”。
看名字很容易理解,playseek应该是开始查找的位置,zte_offset是向前查找的偏移量。
playseek是个时间戳,理论上说,应该取用当前时间,但貌似限制的不是很严格,我用前一天的时间也可以,当然,播放的还是今天的内容。也就是说,这是个没啥蛋用的参数,但必须要有。所以我建议,还是用当前时间来做时间戳吧,万一哪天对过的工程师突然认真了呢?
当然,也没必要太准。比如现在大约是2023年3月27日0点26分,秒就无所谓了,没必要那么准,都取0就行。
那么这个时间戳就是20230327002700。
但是,上一篇文章中说了,虽然地址里写着“timeformat=local”,但实际上用的是UTC时间。而我们是东八区,所以要减去8小时。那么这个时间戳就应该是:
20230326162700
那接下来,把”playseek=20230325160354“加到地址里用”&“连接就成了:
之后还剩下最后一个参数:“zte_offset”。也就是要查找的偏移量。
这是最重要的一个参数,关系到我们想要把时移时间提前多少。
虽然叫“偏移量”,但它的数据格式实际上是:
偏移量-时间戳
注意这个“-”不要用错了符号,保险起见,复制下来吧。
先说”-“后面的时间戳,与”playseek“的值保持一致就行了。也就是”20230325160354“。
而”-“前面的偏移量,就是你想向前时移的秒数。目前辽宁电信的方案里,最多时移1小时,也就是3600秒。
那你就要留心,这个值不要超过3600就好了。至于你想看比1个小时更久之前的内容怎么办?当然是用上一篇文章中的”回看“方法啊!反正时移不能超过1小时就对了。
那么,比方说,我想看之前半小时的内容,半小时就是30分,也就是1800秒。那就取偏移量为1800就好了。
那zte_offset的值就应该是1800-20230325160354。也就是
zte_offset=1800-20230325160354
加入到地址末尾,用”&“连接,就成了
到此,时移地址就搞定了。拿去播放试一下。
可以看到,前面的实时直播和后面的时移后的内容存在越半小时的时差。
这就是时移功能的实现方法了。
可能跟你们想得不太一样,每次想要时移重新选择回看时间,都需要重新想服务器发送一个时间戳和偏移量的请求。并非你们想的那种网上看点播,直接拖进度条就能重新像服务器发送请求,服务器直接响应你进度条位置的数据。
而是每次时移过程都是一个新的URL,流查找并不是依靠http协议提供的流查找来实现的,而是由更高级的应用来处理的。
所以,用普通的播放器来实现1个小时之内任意拖动进度条是别想了。只能是你像看多长时间之前的,就写一个新的地址进行播放。
我倒是用C#实现了拖进度条的功能,每次在进度条上定位后,根据进度条时间自动生成地址来播放。但熟悉C#的都直到,WINFORM那倒霉的控件有多落后,再加上VLC本身加载流媒体的时间就比别的播放器长,所以效果并不是特别好。
也就是凑合着用的程度。
Copyright 2015-2022 人人安全网版权所有 备案号:粤ICP备18023326号-36 联系邮箱:8557298@qq.com