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

时间:2018-08-25 04:36:20

标签: shell video video-streaming streaming mpeg-dash

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

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

enter image description here

3 个答案:

答案 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