有时,将流下载到我们的本地计算机上很有用。
reasons可能是
curl
或
wget
下载url为流提供的资产,我们最终下载了一个小文本文件。肯定不是视频资产。 那么我们如何下载流本身?
没有过多的细节,指向流的URL通常用
M3U8扩展名来命名。该文件称为流的manifest,实际上是一个文本文件,除其他外,对匹配的playlist文件的列表和相应的URL。这是一个摘要摘自manifest文件: ##ext-x-stream-inf:program-id = 1,bandwidth =380600
,codecs =“ avc1.4d00c,mp4a.40.2”,分辨率= 320x180Http://f24hls-i.akamaihd.net/hls/live/221193-B/f24_en_lo_lo_hls/master_250.m3u8 #ext-x-stream-inf:program-id = 1,bandwidth =655600,codecs =“ avc1.77.30,mp4a.40.2”,分辨率= 640x360 Http://f24hls-i.akamaihd.net/hls/live/221193/f24_en_lo_lo_hls/master_500.m3u8 a播放列表文件是另一个文本文件,它告诉播放器在播放头的每个位置上要播放哪个TS文件。 the是典型的PlayList文件的开始:
#extm3u #Ext-X-Version:3 #Ext-X-TargetDuration:10 #Ext-X-Media-序列:303165 #EXTINF:10.000,
20170216T114458/master_500/00151/master_500_01165.ts#EXTINF:10.000, 20170216T114458/master_500/00151/master_500_01166.ts
SO下载每个比特率的播放列表文件后,我们可以开始下载在每个可能的比特率上播放流所需的TS文件。所有这都是我在github中放置的非常简单且自我解释的脚本完成的:https://github.com/ishahak/hls_downloader 我希望这对他人有用。您可以简单地使用ffmpeg。这样:
ffmpeg -i "http://somewhere.com/video.m3u8" -c copy -bsf:a aac_adtstoasc output.mp4