在网站看视频时,很多都是m3u8格式地址,这些是纯文本文件,而且是视频片段,怎么样才能把整个视频下载来合成一个mp4格式视频呢,
方法就是下载ffmpeg工具转码合成。
m3u8文件介绍
M3U(Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator)这种文件格式是音视频文件的列表文件,是纯文本文件。你下载下来打开它,播放软件并不是播放它,而是根据它的记录找到网络地址进行在线播放。m3u8就是以utf-8编码的m3u文件
打开m3u8文件可以看到像下面这样
1 #EXTM3U 2 #EXT-X-VERSION:3 3 #EXT-X-MEDIA-SEQUENCE:11785 4 #EXT-X-TARGETDURATION:11 5 #EXTINF:10.560, 6 cctv1_2md/1602814775_5190881.ts 7 #EXTINF:10.560, 8 cctv1_2md/1602814786_5190882.ts 9 #EXTINF:10.880, 10 cctv1_2md/1602814797_5190883.ts 11 #EXTINF:10.880, 12 cctv1_2md/1602814808_5190884.ts 13 #EXTINF:10.560, 14 cctv1_2md/1602814818_5190885.ts
每个字段含义如下:
1 #EXTM3U //必需,表示一个扩展的m3u文件 2 #EXT-X-VERSION:3 //hls的协议版本号,暗示媒体流的兼容性 3 #EXT-X-MEDIA-SEQUENCE:xx //首个分段的sequence number 4 #EXT-X-ALLOW-CACHE:NO //是否缓存 5 #EXT-X-TARGETDURATION:5 //每个视频分段最大的时长(单位秒) 6 #EXT-X-DISCONTINUITY //表示换编码 7 #EXTINF:<duration> //每个切片的时长
2021.06.10补充
1 #EXT-X-STREAM-INF:RESOLUTION=1920x1080,FRAME-RATE=30,CODECS="avc1.640028,mp4a.40.2" 2 https://xxx.com/index.m3u8 3 格式 4 #EXT-X-STREAM-INF:<attribute-list> 5 <URI> 6 7 说明 8 #EXT-X-STREAM-INF:代表不同的播放流, 9 后面是属性列表,如上面的FRAME-RATE=3010 下面一行是链接地址
转换成mp4的方法
需要借助ffmpeg(在最初的时候,我是自已下载好所有的分片文件,然后再用ffmpeg去合并,后面才发现ffmpeg还提供下载功能,这确实省心不少)
1.下载ffmpeg工具:
ffmpeg官网只提供源码,不提供编译好的版本。但有三方提供的编译好的二进制文件。
下载链接:
https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z
网盘下载:
链接: https://pan.baidu.com/s/14sFdj_-az9KTw0cV5EXQcQ?pwd=hgnc
2.下载N_m3u8DL-CLI构建工具。
如果下载的文件无法播放,可以试试以下方法,亲自试过能下载播放。
下载另外工具:https://github.com/nilaoda/N_m3u8DL-CLI/
或者网盘下载:链接: https://pan.baidu.com/s/114UwDMUuIqZSXigWGS3MZg?pwd=vfum
放到同目录下前面ffmpeg目录下,输入m3u8地址后可下载合成。
带ffmpeg完整版下载:https://pan.baidu.com/s/1TEVB0YgI9B_ZM5lX-nuWxQ?pwd=3iia