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

问题描述 投票:0回答:1

有时,将流下载到我们的本地计算机上很有用。

reasons可能是

    对清单进行手动修改
  • 为了快速访问网络差的服务器文件的快速访问。
  • 如果我们尝试使用
curl

wget
下载url为流提供的资产,我们最终下载了一个小文本文件。肯定不是视频资产。
那么我们如何下载流本身?

ios http-live-streaming
1个回答
3
投票
在我的答案底部的链接中给出了下载的实际脚本。但是,在我们进行操作方法之前,让我们首先了解下载流的步骤。

没有过多的细节,指向流的URL通常用

M3U8

扩展名来命名。该文件称为流的manifest,实际上是一个文本文件,除其他外,对匹配的playlist文件的列表和相应的URL。这是一个摘要摘自manifest文件: ##ext-x-stream-inf:program-id = 1,bandwidth =380600

,codecs =“ avc1.4d00c,mp4a.40.2”,分辨率= 320x180
Http://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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.