给定一个https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd这样的mpd文件,是否可以轻松下载存储在服务器上的所有Dash文件(假设我们知道它是服务器上的静态内容)。也就是说,我应该能够运行提供所下载内容的HTTP服务器,并将Dash播放器指向该服务器以播放相同的视频。
youtube-dl似乎没有给我Dash包。我可以像浏览器一样使用curl来执行XHR请求,但我希望有一种更简单的方法。
答案 0 :(得分:2)
无需开发轮子!
盛大的工具 youtube-dl 知道数百种平台/协议/等以及MPEG DASH以及Apple HLS等! 经常更新/错误修正
玩得开心!
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
答案 1 :(得分:1)
您可能会发现,实际上没有一种更简便的方法可供您使用,除非有人碰巧构建了一个我不知道的工具来实现此目的。
值得记住的是,DASH流通常将具有多个ABR(自适应比特率)再现,并且服务器上的原始视频实际上将以服务器或CDN上的多个不同比特率版本存储。
普通播放器会从最适合设备类型和当前网络状况的哪种比特率版本中选择视频的每个块或片段。
因此,如果您要复制原始服务器上的内容,则必须创建一个客户端,该客户端从视频的所有可用比特率版本中下载所有片段。或者,您也可以下载最高质量的版本,然后自己转码为其他比特率。
要真正将DASH流提供给其他地方,您还需要确保更新清单以指向服务器上正确的URL。
最后,您需要检查您是否有权共享它,并且文件未加密,在这种情况下,您可能无法与客户端共享它。
答案 2 :(得分:0)
我找到了一个项目,用于下载存储在服务器上的段:https://github.com/Viblast/dash-proxy
我不得不为它自己修复一些问题:https://github.com/elv-peter/dash-proxy