最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【B站API】視頻二壓與網(wǎng)頁(yè)播放器API行為的聯(lián)系

2020-04-26 21:35 作者:ZHY2020  | 我要投稿

頭圖來源:pid?63756446?侵刪

投稿視頻未被B站二壓和被二壓似乎在網(wǎng)頁(yè)api回復(fù)上好像有點(diǎn)不一樣,看完這個(gè)可能是奇怪的知識(shí)增加了。本文做為B站api學(xué)習(xí)筆記。

感興趣的就跟我體驗(yàn)發(fā)現(xiàn)規(guī)律驗(yàn)證規(guī)律的樂趣吧~~~

起因

之前寫了篇調(diào)查B站新4K視頻碼率的文章CV5778825,起初只下載了AVC格式的原視頻(通過手機(jī)緩存),后來發(fā)現(xiàn)B站是有HEVC格式的視頻的(目前確定UWP客戶端可以在線播放),奈何當(dāng)時(shí)UWP有點(diǎn)bug下載403forbidden(此文寫作時(shí)已修復(fù)但仍不能下載HEVC視頻),雖然播放器能看碼率,但我更相信下載后讀取的MediaInfo的數(shù)值,所以就尋找其他下載方法,百度獲悉you-get可以獲取HEVC,起初版本沒有更新4K支持,于是又學(xué)習(xí)了抓API獲取下載鏈接的方法。

雖然最后我的目的通過將you-get更新到測(cè)試中的developer分支得到解決,但其間我用其下載我自己上傳的視頻BV1qt4y1y7EJBV1FK411j7A5,通過給you-get加入火狐的cookies已達(dá)到大會(huì)員身份使用“-i”指令獲取不同畫質(zhì)的信息時(shí),前面的視頻只能獲取到1080p非會(huì)員等級(jí),而后一個(gè)卻能獲取到從“1080p60”開始的所有畫質(zhì)。之后通過“--debug”選項(xiàng)了解到y(tǒng)ou-get是通過解析api來獲取下載鏈接的,這兩個(gè)視頻在請(qǐng)求api得到的回應(yīng)肯定有不同,而作為上傳者我自己很清楚兩個(gè)視頻的區(qū)別:前一個(gè)做了防二壓上傳前控制了碼率,后一個(gè)是自己偷懶直傳了高碼率的視頻被B站二壓了。

BV1qt4y1y7EJ?右BV1FK411j7A5

于是有了接下來的探究。

抓取API發(fā)現(xiàn)端倪

抓取環(huán)境:Microsoft?Edge?Chromium?Beta

首先看前一個(gè)視頻BV1qt4y1y7EJ,F(xiàn)12開發(fā)者模式

切換至1080p60畫質(zhì)。

找到playerurl?cid=……這條網(wǎng)頁(yè)播放器請(qǐng)求視頻鏈接的記錄。展開data->dash->video??煽吹狡渲兄挥幸粭l0號(hào)記錄id116代表1080p60,其中有視頻鏈接,視頻長(zhǎng)寬,編碼格式級(jí)別。

(codec: "avc1.640032"代表AVC編碼級(jí)別High@L5 32是50的十六進(jìn)制,這個(gè)之后還有討論先記?。?/p>

BV1qt4y1y7EJ 1080p60api回復(fù)

再看第二個(gè)BV1FK411j7A5

同樣操作。

BV1FK411j7A5 1080p60?api回復(fù)

是不是video面多了好幾個(gè),每個(gè)對(duì)應(yīng)的是每種畫質(zhì)的視頻流信息內(nèi)容與上面展開的大致一樣。

再獲取一下前一個(gè)的1080p畫質(zhì)的回復(fù):

BV1qt4y1y7EJ 1080p api回復(fù)

沒有回復(fù)1080p60和720p60的視頻流信息

再看720p60回復(fù):

BV1qt4y1y7EJ 720p60 api回復(fù)

嗯,只有一個(gè)。

這是60幀視頻,那非60幀1080p+非二壓的視頻呢?我也上傳了范例。BV1Ap4y1y77p

BV1Ap4y1y77p 1080p+?api回復(fù)
BV1Ap4y1y77p 1080p?api回復(fù)

好了,破案了,被二壓的視頻B站的api回復(fù)會(huì)把所有畫質(zhì)的視頻流信息一起回復(fù),沒二壓的api會(huì)在請(qǐng)求非大會(huì)員畫質(zhì)時(shí)回復(fù)所有非大會(huì)員畫質(zhì)視頻流,大會(huì)員畫質(zhì)每個(gè)單獨(dú)回復(fù)。

至于這個(gè)區(qū)別跟you-get無法下載我的非二壓視頻的60幀大會(huì)員畫質(zhì)有什么關(guān)系,我并不清楚,因?yàn)樗?qǐng)求時(shí)也請(qǐng)求api時(shí)也有qn=112(代表1080p+畫質(zhì)),可能與其他參數(shù)有關(guān),不作繼續(xù)討論。

繼續(xù)聯(lián)想

還記得之前提到的視頻流信息里的編碼級(jí)別嗎?

(codec: "avc1.640032"代表AVC編碼級(jí)別High@L5 32是50的十六進(jìn)制)

這個(gè)我就很熟悉了,之前研究防B站二壓中從@人在火星-剛下飛船?的專欄CV4461542,學(xué)到一個(gè)通過看“播放統(tǒng)計(jì)信息”快速判斷視頻是否二壓的方法。

引自CV4461542

被二壓的視頻都是avc1.64001E與視頻實(shí)際不匹配,實(shí)際api回復(fù)中1080p60的信息是:

被二壓視頻1080p60信息? BV1FK411j7A5

avc1.64001E在哪兒呢?

這是360p的編碼級(jí)別。

二壓視頻360p信息 BV1FK411j7A5

而360p是這些獲取到的視頻流信息的最后一個(gè),所以猜測(cè)網(wǎng)頁(yè)播放器的統(tǒng)計(jì)信息中的這段avc1.6400XX?是取自api回復(fù)的所有視頻流信息的最后一個(gè)。

之前得出未被二壓視頻的大會(huì)員畫質(zhì)的api回復(fù)只會(huì)回復(fù)當(dāng)前的視頻流信息,那么1080p60的統(tǒng)計(jì)信息就會(huì)是實(shí)際的值。720p60畫質(zhì)即使是被二壓后的視頻應(yīng)該也會(huì)顯示實(shí)際值。

那么來驗(yàn)證一下。還是我的未被二壓視頻(BV1qt4y1y7EJ

播放器統(tǒng)計(jì)信息
api回復(fù)

看來猜測(cè)可以得到驗(yàn)證了。

網(wǎng)頁(yè)播放器為什么會(huì)錯(cuò)誤顯示編碼等級(jí)信息,這我就不知道了,只是得出一個(gè)規(guī)律。

結(jié)

感覺好像到頭來是沒用的知識(shí)+1哈。

僅供學(xué)習(xí)參考用。

api中qn(video?id)值對(duì)應(yīng)畫質(zhì):

4K????????????? 120

1080p60????116

1080p+????? 112

720p60????? ?74

1080p???????? 80

720p????????? ?64

480p????????? ?32

360p????????? ?16

——ZHY

引用

判斷二壓方法來源:

備注:以上的api僅在具有大會(huì)員畫質(zhì)的視頻中觸發(fā),且只發(fā)生于大會(huì)員畫質(zhì)間切換,大會(huì)員畫質(zhì)與非大會(huì)員畫質(zhì)之間切換,非大會(huì)員畫質(zhì)間切換不會(huì)觸發(fā)。沒有大會(huì)員畫質(zhì)的視頻瀏覽器沒有抓取到不代表沒有這個(gè)請(qǐng)求,仍可以通過在https://api.bilibili.com/x/player/playurl?后手動(dòng)輸入bid、cid、qn等參數(shù)獲取到響應(yīng)的回復(fù)。

【B站API】視頻二壓與網(wǎng)頁(yè)播放器API行為的聯(lián)系的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
布尔津县| 和平县| 松滋市| 浮梁县| 扎兰屯市| 喀喇沁旗| 孝感市| 屯昌县| 沁源县| 包头市| 普陀区| 北宁市| 古田县| 翁牛特旗| 望奎县| 延吉市| 屏边| 海兴县| 富平县| 台江县| 措美县| 新郑市| 卓资县| 临江市| 安仁县| 鄯善县| 柏乡县| 延津县| 巴里| 乌什县| 讷河市| 望谟县| 蓬溪县| 巴南区| 泾源县| 沙坪坝区| 鄯善县| 潞西市| 土默特左旗| 女性| 灵璧县|