遼寧電信部分地區(qū)IPTV時移播放方法

書接上回
遼寧電信部分地區(qū)IPTV回看方法 - 嗶哩嗶哩 (bilibili.com)
參考上面那篇文章的方法,把頻道的單播地址復(fù)制出來
之后照例是替換。第一步,在”?"前面加上”/1000.m3u8“,也就成了
接著把那些變量值固定的GET參數(shù)寫好
固定變量值的就這些,直接加到地址末尾,變成
之后兩個需要你自己設(shè)置值的GET參數(shù),分別為“playseek”和“zte_offset”。
看名字很容易理解,playseek應(yīng)該是開始查找的位置,zte_offset是向前查找的偏移量。
playseek是個時間戳,理論上說,應(yīng)該取用當(dāng)前時間,但貌似限制的不是很嚴(yán)格,我用前一天的時間也可以,當(dāng)然,播放的還是今天的內(nèi)容。也就是說,這是個沒啥蛋用的參數(shù),但必須要有。所以我建議,還是用當(dāng)前時間來做時間戳吧,萬一哪天對過的工程師突然認(rèn)真了呢?
當(dāng)然,也沒必要太準(zhǔn)。比如現(xiàn)在大約是2023年3月27日0點26分,秒就無所謂了,沒必要那么準(zhǔn),都取0就行。
那么這個時間戳就是20230327002700。
但是,上一篇文章中說了,雖然地址里寫著“timeformat=local”,但實際上用的是UTC時間。而我們是東八區(qū),所以要減去8小時。那么這個時間戳就應(yīng)該是:
20230326162700
那接下來,把”playseek=20230325160354“加到地址里用”&“連接就成了:
之后還剩下最后一個參數(shù):“zte_offset”。也就是要查找的偏移量。
這是最重要的一個參數(shù),關(guān)系到我們想要把時移時間提前多少。
雖然叫“偏移量”,但它的數(shù)據(jù)格式實際上是:
偏移量-時間戳
注意這個“-”不要用錯了符號,保險起見,復(fù)制下來吧。
先說”-“后面的時間戳,與”playseek“的值保持一致就行了。也就是”20230325160354“。
而”-“前面的偏移量,就是你想向前時移的秒數(shù)。目前遼寧電信的方案里,最多時移1小時,也就是3600秒。
那你就要留心,這個值不要超過3600就好了。至于你想看比1個小時更久之前的內(nèi)容怎么辦?當(dāng)然是用上一篇文章中的”回看“方法??!反正時移不能超過1小時就對了。
那么,比方說,我想看之前半小時的內(nèi)容,半小時就是30分,也就是1800秒。那就取偏移量為1800就好了。
那zte_offset的值就應(yīng)該是1800-20230325160354。也就是
zte_offset=1800-20230325160354
加入到地址末尾,用”&“連接,就成了
到此,時移地址就搞定了。拿去播放試一下。

可以看到,前面的實時直播和后面的時移后的內(nèi)容存在越半小時的時差。
這就是時移功能的實現(xiàn)方法了。
可能跟你們想得不太一樣,每次想要時移重新選擇回看時間,都需要重新想服務(wù)器發(fā)送一個時間戳和偏移量的請求。并非你們想的那種網(wǎng)上看點播,直接拖進(jìn)度條就能重新像服務(wù)器發(fā)送請求,服務(wù)器直接響應(yīng)你進(jìn)度條位置的數(shù)據(jù)。
而是每次時移過程都是一個新的URL,流查找并不是依靠http協(xié)議提供的流查找來實現(xiàn)的,而是由更高級的應(yīng)用來處理的。
所以,用普通的播放器來實現(xiàn)1個小時之內(nèi)任意拖動進(jìn)度條是別想了。只能是你像看多長時間之前的,就寫一個新的地址進(jìn)行播放。
我倒是用C#實現(xiàn)了拖進(jìn)度條的功能,每次在進(jìn)度條上定位后,根據(jù)進(jìn)度條時間自動生成地址來播放。但熟悉C#的都直到,WINFORM那倒霉的控件有多落后,再加上VLC本身加載流媒體的時間就比別的播放器長,所以效果并不是特別好。
也就是湊合著用的程度。
