有时将流下载到本地计算机中很有用。
原因可能是
如果我们尝试使用curl
或wget
下载流的网址所指向的资产,我们最终会下载一个小文本文件。它肯定不是视频资产。
那么我们如何才能下载流本身呢?
答案 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
我希望它对其他人有用。