如何将HLS流下载到本地计算机?

时间:2017-03-23 13:16:30

标签: ios hls

有时将流下载到本地计算机中很有用。

原因可能是

  • 对清单进行手动修改
  • 用于快速访问网络较差的服务器文件。

如果我们尝试使用curlwget下载流的网址所指向的资产,我们最终会下载一个小文本文件。它肯定不是视频资产。

那么我们如何才能下载流本身呢?

1 个答案:

答案 0 :(得分:1)

执行下载的实际脚本在我的答案底部的链接中给出。但在我们进入操作方法之前,让我们先了解下载流的步骤。

在没有详细说明的情况下,指向流的网址通常以 m3u8 扩展名命名。该文件称为流的清单,实际上是一个文本文件,其中包含一对配对列表:匹配播放列表的比特率和相应的URL 文件。以下是清单文件的摘录:

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=380600,CODECS="avc1.4d00c,mp4a.40.2",RESOLUTION=320x180
http://f24hls-i.akamaihd.net/hls/live/221193-b/F24_EN_LO_HLS/master_250.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=655600,CODECS="avc1.77.30,mp4a.40.2",RESOLUTION=640x360
http://f24hls-i.akamaihd.net/hls/live/221193/F24_EN_LO_HLS/master_500.m3u8

播放列表文件是另一个文本文件,它告诉玩家在播放头的每个位置上播放哪个TS文件。

以下是典型播放列表文件的开头:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:303165
#EXTINF:10.000,
20170216T114458/master_500/00151/master_500_01165.ts
#EXTINF:10.000,
20170216T114458/master_500/00151/master_500_01166.ts

因此,在下载每个比特率的播放列表文件后,我们可以开始下载以每个可能的比特率播放流所需的TS文件。

所有这些都是使用我在GitHub中放入的一个非常简单且自我解释的脚本完成的:https://github.com/ishahak/HLS_Downloader

我希望它对其他人有用。