...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
。
如果链接不是连续的,请像这样复制它们:
- 将 devtools 切换到分离窗口(单击 devtools 设置图标,单击“停靠侧”取消停靠图标)。下次您只需按Ctrl- Shift-即可D。
- 按Ctrl- Shift-调用 devtools-for-devtoolsi
- 运行此代码将所有/过滤请求的 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