photo_2020-07-22_21-19-04.jpg

via 春潮频道

I. 教程概要(必看)

0.了解什么M3U8;
1.如何找到 m3u8 文件URL链接;
2.配置 终端APP的HTTP代理以加速M3U8文件下载;
3.使用 FFmpeg 进行下载 m3u8 对应的资源;
4.可能存在的一些错误及解决方法;

II. M3U8-Downloader(开源带GUI的M3U8下载器)

很多小伙伴可能学习不来终端的使用,也不大常接触命令行之类的东西,习惯了点击几下就可以下载;下面有几个M3U8下载器(有GUI)推荐给大家,安装后只需简单的单击几下就可以下载了;

M3U8-Downloaderhttps://github.com/HeiSir2014/M3U8-Downloader (我在用这个)
M3U8-Downloaderhttps://github.com/topics/m3u8-downloader (更多项目)

III. FFmpeg 介绍

FFmpeg 是一个开放源代码的自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。 “FFmpeg”这个单词中的“FF”指的是“Fast Forward”。

官网:https://ffmpeg.org/download.html

IV. HLS协议介绍

HLS(全称:Http Live Streaming)是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,1个是 M3U8描述文件,第2个是TS媒体文件。

V. M3U8 文件介绍

m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。

其内容为:(举例)

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="71711737b6d71cfa.ts",IV=0xa357509bf0846bd110519113c1452292
#EXTINF:5.405400,
128830.ts
#EXTINF:4.004000,
128831.ts
#EXTINF:5.805800,
128832.ts
#EXTINF:4.004000,
128833.ts
#EXTINF:4.004000,
128834.ts

VI. 下载并安装 FFmpeg

FFmpeg 官网https://ffmpeg.org/download.html#releases
1.下载到本地并解压:https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
2.打开终端App;

MacBook-Air:~ monica$ cd /Users/monica/Downloads/ffmpeg\ 2 #进入解压后的文件夹路径
MacBook-Air:ffmpeg 2 monica$ ./configure
MacBook-Air:ffmpeg 2 monica$ make && make install

以上,编译安装完成;

参考资料 玩转 Terminal 终端APP:入门指南及进阶技巧

VII. 如何找到M3U8文件URL

这里介绍两种抓 M3U8 文件的方法给大家,一种是浏览器扩展嗅探工具如猫爪,另外一种则是浏览器的开发者工具;

猫抓下载与使用

1.下载地址:https://chrome.google.com/
2.安装好后打开视频播放页如:https://jable.tv/videos/mimk-082/ 举例

猫爪-浏览器扩展-抓M3U8.png

浏览器开发者工具

浏览器开发者工具-抓M3U8文件.png

1.打开浏览器开发者工具(默认为 Chrome浏览器);
在Chrome菜单中选择 更多工具 > 开发者工具
当前页面元素上右键点击,选择 “检查”
使用 快捷键 Ctrl+Shift+I (Windows) 或 Cmd+Opt+I (Mac)

2.按上图所示

VIII. 使用FFmpeg下载 M3U8 文件

1.打开终端 APP
2.使用 FFmpeg 命令行下载 M3U8 文件;

ffmpeg -i https://qmm621.cdnlab.live/hls/YeQQ1SgBm0EdiY22LE3a0g/1613873771/12000/12883/12883.m3u8 -c copy -bsf:a aac_adtstoasc /Users/monica/Downloads/MIMK-082.mp4 #带转码

ffmpeg -i https://qmm621.cdnlab.live/hls/YeQQ1SgBm0EdiY22LE3a0g/1613873771/12000/12883/12883.m3u8 -c copy /Users/monica/Downloads/MIMK-082.mp4 #不转码 效率高

如出现 http error 403 forbidden 错误,可通过添加 user_agent 参数进行解决,参考如下;

ffmpeg -user_agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36" -i https://qsdhc7.cdnlab.live/hls/4oAqXKCC5NEErkFKaCHD_A/1613932316/13000/13464/13464.m3u8 -c copy -bsf:a aac_adtstoasc /Users/monica/Downloads/JUL-469.mp4 #带转码

ffmpeg -user_agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36" -i https://qsdhc7.cdnlab.live/hls/4oAqXKCC5NEErkFKaCHD_A/1613932316/13000/13464/13464.m3u8 -c copy /Users/monica/Downloads/JUL-469.mp4 #不转码 效率高

更多参数可参考:FFmpeg 视频处理入门教程

$ ffmpeg -h 

IX. 为终端配置Http代理(端口号设置)

博主使用的代理工具为 ClashX,其端口为 7890,故设置如下;(一次性设置,重启终端后失效);

打开终端,输入如下命令行;

export http_proxy=socks5://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

测试设置是否生效;

$ curl https://www.google.com/
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="zh-HK"><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"><title>Google</title>...
</body></html>

如果返回谷歌首页的 HTML 文档则代表已生效;

如何获取代理端口号:如果你已经连上网,且能上谷歌;则可在 Mac的 系统偏好设置 - 网络 - 高级选项 中找到相应 网页代理设置 / 安全网页代理设置 / SOCKS代理;如下图所示;(如果你不知道系统偏好设置 - 网络 是哪位,请点击这里:在 Mac 上输入代理服务器设置

网络偏好设置.png

X. 浏览器扩展下载 M3U8 文件

XI. 附注

最后修改:2023 年 02 月 03 日 03 : 06 PM