如何通过ffmpeg抓取M3U8的特定片段?

How to grab specific segments of M3U8 via ffmpeg?

我最近问 baout 如何下载在线 m3u8 文件的片段,有人指出这可以通过 ffmpeg:

ffmpeg -i [LINK] -codec copy [OUTPUT FILE] #downloads only audio segments;
ffmpeg -i [LINK] -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 [OUTPUT] #downloads audio and video segments

对于那些不熟悉的人,m3u8 的格式有点像“播放列表”,一个 m3u8 文件指向一堆较小的“片段”,这些片段拼凑在一起构成了整个视频。因此,完全有可能在执行过程中中途停止上述命令并仍然生成可观看的视频(即视频编辑器可以正确解释的视频)。

我想知道是否有 ffmpeg 的内置方法允许我抓取给定 m3u8 的 N-M 段。如果有 ffmpeg 之外的方法,也请随意提及。感谢您的帮助。

在调查之后,我可以说这不可能通过 ffmpeg。理论上您可以使用 -ss-t 参数来指定起点和持续时间,但 ffmpeg 似乎会查看每个剪辑直到指定的终点,这使得下载过程非常长。

如果您只想下载特定数量的片段,您需要查看 m3u8 文件,找到其关联的媒体列表,然后从该媒体列表中下载片段。