下载流媒体视频,其中有许多 xhr 部分用于分离音频和视频

下载流媒体视频,其中有许多 xhr 部分用于分离音频和视频

...hd4b.mp4/fragment-1-v1.m4s我想下载流媒体视频。当我转到 Chrome DevTools -> 网络时,我发现了许多类似于和其他类似于的音频链接,而不是指向 mp4 视频的链接...a1.m4s。还有一个首字母...hd4b.mp4/init-v1.mp4...init-a1.mp4。片段太多,无法手动复制它们。

因此,我需要知道如何过滤我想要的 .mp4 文件的所有 .m4s 片段链接。有一个在这里回答它为我提供了 Networks 中的所有链接,执行后我可以将链接粘贴到文件中,但它获取的链接不属于我想要的 .mp4。这其实并不重要,但如果只获取 .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 将从哪里%g开始。如果存在初始化链接,则必须将其包含在文件的开头video-links.txt

如果链接不是连续的,请像这样复制它们:

  1. 将 devtools 切换到分离窗口(单击 devtools 设置图标,单击“停靠侧”取消停靠图标)。下次您只需按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

相关内容