m3u8视频下载

什么是m3u8

m3u8可以理解为一个索引文件,里边记录了视频文件的分片信息,也就是一堆.ts文件的地址。
为了加快视频的访问和存储效率,网络上的视频文件一般要做分片处理。举个例子,比如一个视频文件有100m,假设切片大下是1m,我们可以将这个大文件切成100个小文件。切割好以后,将这一堆文件按顺序做一个编号,然后保存到云存储上,每个切片存储后都会得到一个唯一的地址,我们将切片文件的编号信息和地址信息写到一个文件里,这个文件就是m3u8文件。
了解了m3u8是什么,那么我们想要下载一个视频文件,逻辑就很清晰了,步骤如下:
1、获取/下载m3u8文件
2、解析m3u8文件的信息,获得切片后的小文件的下载地址
3、下载所有的切片文件
4、按顺序合并所有的切片文件
我们要清楚,当前我们遇到的问题,有99%是别人已经遇到过的,要实现上述步骤其实很简单,无非是文件的下载解析与切片合并,但是伸手党怎么可能自己写代码,于是有了下边的故事...

N_m3u8DL-CLI

这是GitHub桑的一个开源项目,用来下载m3u8视频的
https://github.com/nilaoda/N_m3u8DL-CLI

下载工具

工具的历史版本地址
https://github.com/nilaoda/N_m3u8DL-CLI/releases
找到最新的版本,我这里是v2.99,找到N_m3u8DL-CLI_v2.9.9_with_ffmpeg_and_SimpleG.zip,点击下载
https://github.com/nilaoda/N_m3u8DL-CLI/releases/download/2.9.9/N_m3u8DL-CLI_v2.9.9_with_ffmpeg_and_SimpleG.zipimage.png

使用工具

解压下载好的zip文件

image.png

双击N_m3u8DL-CLI-SimpleG.exe打开界面填写信息

保存目录和m3u8的地址必填,视频标题可以写也可以不写,勾选使用二进制合并,和合并后删除分片
点击go按钮
image.png
下载好后会得到一个大的ts文件,这个ts文件是可以直接用播放器打开的,如果看着不舒服,可以用视频转码工具将ts文件转成mp4
可以用大家熟悉的格式工厂,但是程序员怎么可能再去下载安装这么个东西,太费劲了,于是便有了下边的故事。。。

ffmpeg

FFmpeg 是一个库和工具的集合,用于处理音频、视频、字幕和相关元数据等多媒体内容。已经在GitHub上开源,地址https://github.com/FFmpeg/FFmpeg
看介绍是很简单吧,但是国内所有的播放器包括QQ音影、爱奇艺、暴风音影,包括国外的vlc、potplayer等国际知名的播放器都调用了ffmpeg的api,具体有多np我就不多说了吧。
很显然,我们上边下载的N_m3u8DL-CLI也同样调用了ffmpeg,所以,我们可以直接在命令行里输入一个命令将ts文件转为mp4,命令如下:

ffmpeg -i "ts文件路径" -c copy "mp4文件路径"
posted @ 2022-03-21 00:09  iminifly  阅读(1597)  评论(0编辑  收藏  举报