下載串流媒體視頻,其中許多 xhr 部分分別用於音頻和視頻

下載串流媒體視頻,其中許多 xhr 部分分別用於音頻和視頻

我想下載串流媒體影片。當我轉到 Chrome DevTools -> Network 而不是 mp4 影片的連結時,我發現許多類似...hd4b.mp4/fragment-1-v1.m4s音訊...a1.m4s的連結。還有一個首字母...hd4b.mp4/init-v1.mp4...init-a1.mp4。碎片太多,無法手動複製。

所以我需要知道如何過濾我想要的.mp4檔案的所有.m4s片段連結。有一個在這裡回答這為我提供了網絡中的所有鏈接,執行後我可以將鏈接粘貼到文件中,但它獲得的鏈接也不屬於我想要的 .mp4 的一部分。這並不重要,但最好只獲取...hd4b.mp4.

如何取得一個檔案中的視訊連結和另一個檔案中的音訊連結?

我應該如何處理init連結?將它們添加到列表中?

現在我認為,獲取鏈接的方法是轉到視頻末尾並獲取最後一個數字並生成鏈接,將數字從一修改到最後。我將如何產生連結?回答

然後當我有連結時就是這樣下載它們,但如何合併影片部分?

當我有了音訊和視訊後,如何將它們組合到最終的 mp4 中?

答案1

youtube-dl

嘗試使用最新版本下載影片。如果您無法按照步驟操作。

首先獲取鏈接

在 Chrome 中,前往 DevTools -> Networks 並找到第一個和最後一個片段連結。如果連結是連續的,則產生如下連結:

seq -f "...hd4b.mp4/fragment-%g-v1.m4s" 10 > video-links.txt

從1 到 10 的位置%gvideo-links.txt

如果連結不是連續的,請像這樣複製它們:

  1. 將 devtools 切換到分離視窗(點擊 devtools 設定圖標,點擊“dock side”取消停靠圖標)。下次您只需按Ctrl- Shift-即可D
  2. Ctrl- Shift-呼叫 devtools-for-devtoolsi
  3. 執行此程式碼將所有/已過濾請求的 URL 複製到剪貼簿:copy(UI.panels.network._networkLogView._dataGrid._rootNode._flatNodes.map(n => n._request._url).join('\n'))

您可以將程式碼儲存為「來源」面板中的程式碼片段,然後透過右鍵單擊或 Ctrl-Enter 來運行它:

var URLs = UI.panels.network._networkLogView._dataGrid._rootNode._flatNodes.map(n => n._request._url);
copy(URLs.join('\n'));
URLs; // displays it in the console as an expandable array

執行腳本後,連結位於剪貼簿中,因此請將它們貼到文件中。

下載視頻和音頻

wget -i "video-links.txt" -O "video.mp4" -B "...hd4b.mp4/"

將 -B 選項與 URL 的基礎一起使用。

按照與影片相同的步驟下載音訊。

合併視訊和音訊

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

相關內容