如何下载出现在服务器上的 Dash 视频文件?

How to download Dash video files as they appear on the server?

给定像 https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd 这样的 mpd 文件,是否可以轻松下载存储在服务器上的所有 Dash 文件(假设我们知道它是服务器上的静态内容)。也就是说,我应该能够 运行 为我下载的内容提供服务的 HTTP 服务器,并将 Dash 播放器指向它以播放相同的视频。

youtube-dl 好像没有给我 Dash 包。我可以像浏览器一样使用 curl 来执行 XHR 请求,但我希望有更简单的方法。

您可能会发现实际上并没有更简单的方法可供您使用,除非有人碰巧构建了一个工具来执行此操作,而我不知道这一点。

值得记住的是,一个 DASH 流通常会有多个 ABR(自适应比特率)再现,服务器上的原始视频实际上会以多个不同比特率版本存储在服务器或 CDN 上。

普通播放器将 select 视频的每个块或片段来自最适合设备类型和当前网络条件的比特率版本。

因此,如果您想复制原始服务器上的内容,您必须创建一个客户端,从视频的所有可用比特率版本中下载所有片段。或者下载最高质量的版本并自行转码为其他比特率。

要真正将 DASH 流提供给其他地方,您还需要确保更新清单以指向服务器上正确的 URL。

最后,您需要检查您是否有权共享它并且文件未加密,在这种情况下您可能无法与客户共享它。

无需开发轮子!

伟大的工具 youtube-dl 知道数百个 platforms/protocols/etc 以及 MPEG DASH 和 Apple HLS 等等! 经常updates/bugfixes

玩得开心!

http://rg3.github.io/youtube-dl/

PS.: 如果你想保留片段 - 使用选项

--keep-fragments                 

下载完成后将下载的片段保存在磁盘上;默认清除片段

更新:

您的播放列表有很多选项(基于视频带宽),例如:

youtube-dl.exe -F https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd
[generic] bbb_30fps: Requesting header
WARNING: Falling back on generic information extractor.
[generic] bbb_30fps: Downloading webpage
[generic] bbb_30fps: Extracting information
[info] Available formats for bbb_30fps:
format code                 extension  resolution note
bbb_a64k                    m4a        audio only DASH audio   67k , m4a_dash container, mp4a.40.5 (48000Hz)
bbb_30fps_320x180_200k      mp4        320x180    DASH video  254k , mp4_dash container, avc1.64000d, 30fps, video only
bbb_30fps_320x180_400k      mp4        320x180    DASH video  507k , mp4_dash container, avc1.64000d, 30fps, video only
bbb_30fps_480x270_600k      mp4        480x270    DASH video  759k , mp4_dash container, avc1.640015, 30fps, video only
bbb_30fps_640x360_800k      mp4        640x360    DASH video 1013k , mp4_dash container, avc1.64001e, 30fps, video only
bbb_30fps_640x360_1000k     mp4        640x360    DASH video 1254k , mp4_dash container, avc1.64001e, 30fps, video only
bbb_30fps_768x432_1500k     mp4        768x432    DASH video 1883k , mp4_dash container, avc1.64001e, 30fps, video only
bbb_30fps_1024x576_2500k    mp4        1024x576   DASH video 3134k , mp4_dash container, avc1.64001f, 30fps, video only
bbb_30fps_1280x720_4000k    mp4        1280x720   DASH video 4952k , mp4_dash container, avc1.64001f, 30fps, video only
bbb_30fps_1920x1080_8000k   mp4        1920x1080  DASH video 9914k , mp4_dash container, avc1.640028, 30fps, video only
bbb_30fps_3840x2160_12000k  mp4        3840x2160  DASH video 14931k , mp4_dash container, avc1.640033, 30fps, video only (best)

现在,如果您希望下载所有比特率的所有片段,您可以尝试使用魔法选项

--all-formats

或者您可以使用 - 格式 选项,例如:

youtube-dl.exe --format bbb_30fps_320x180_200k --keep-fragments 

我找到了一个项目,可以下载存储在服务器上的片段:https://github.com/Viblast/dash-proxy

我不得不 fork 它来为自己修复一些问题:https://github.com/elv-peter/dash-proxy