banner
DIYgod

Hi, DIYgod

写代码是热爱,写到世界充满爱!
github
twitter
follow
bilibili
telegram
email
steam
playstation
nintendo switch

微小微直播回放的 DPlayer 實現

以下為 10 月 19 日微小微一直播的直播回放(迷妹臉,彈幕也成功扒下來轉成 DPlayer 可以識別的格式啦。

視頻有時出現卡頓是直播的原因;彈幕總計 15768 條、彈幕文件 1.7 MB,第一條彈幕在 13 秒出現。

一直播彈幕池與 DPlayer 彈幕池互不影響,也可以在下面發彈幕哟。

 

視頻及彈幕搬運#

直播第二天發現一直播有昨天的回放,開心到暈掉,醒過來之後開始想辦法下載視頻和彈幕。

視頻#

網上找不到下載一直播視頻的工具,只好自己動手,瀏覽器開發者工具看到頁面加載了一個 m3u8 文件,然後就是下載 m3u8 文件裡的 354 個視頻片段就好了。

寫了個 shell 腳本批量下載:

#!/bin/bash
for k in $( seq 1 354 )
do
   wget http://xxx/${k}.ts
done

DPlayer 早就做了對 m3u8 格式的支持,不用對視頻片段做任何後續處理。

視頻下載完成。

彈幕#

同樣用開發者工具抓包,找到彈幕文件請求的規律。

第一個彈幕片段是 http://xxx?ts=1 ,其他的彈幕片段也只有 ts 參數不同。然後 ts 參數的規律是這樣的:下一個片段的參數是上一個片段返回值裡的最後一個 ts 值。

知道規律後就寫了個 js 腳本來下載彈幕和把彈幕轉換成 DPlayer 的格式。

function ajaxDan(ts) {
    $.ajax({
        url: `http://xxx?ts=${ts}`,
        success: function (data) {
            var tli = parseInt(data.data.list[data.data.list.length - 1].ts)+1;
            console.log(tli);
            data.data.list.map(function (i) {
                dan[index] = {
                    author: "yizhibon" + i.nickname,
                    time: parseInt(i.ts) / 1000,
                    text: i.content,
                    color: '#fff',
                    type: 'right'
                }
                index++;
            });
            ajaxDan(tli)}
    })
}
var dan = [];
var index = 0;
ajaxDan(1);

運行結果:536 個視頻片段,15768 條彈幕

wxwlive1

然後把彈幕對象字符串化,複製到 json 文件裡。

完成。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。