Total Pageviews

Thursday, 1 April 2021

m3u8-downloader

 m3u8视频在线提取工具.

(English version)

工具在线地址,推荐使用 chrome 浏览器。

研发背景

  • m3u8视频格式简介

    • m3u8视频格式原理:将完整的视频拆分成多个 .ts 视频碎片,.m3u8 文件详细记录每个视频片段的地址。
    • 视频播放时,会先读取 .m3u8 文件,再逐个下载播放 .ts 视频片段。
    • 常用于直播业务,也常用该方法规避视频窃取的风险。加大视频窃取难度。
  • 鉴于 m3u8 以上特点,无法简单通过视频链接下载,需使用特定下载软件。

    • 但软件下载过程繁琐,试错成本高。
    • 使用软件的下载情况不稳定,常出现浏览器正常播放,但软件下载速度慢,甚至无法正常下载的情况。
    • 软件被编译打包,无法了解内部运行机制,不清楚里面到底发生了什么。
  • 基于以上原因,开发了本工具。

工具特点

  • 无需安装,打开网页即可用。
  • 强制下载现有片段,无需等待完整视频下载完成。
  • 操作直观,精确到视频碎片的操作。

功能说明

 【解析下载】输入 m3u8 链接,点击下载视频。 【跨域复制代码】当资源出现跨域限制时,点击复制页面代码,在视频页面的控制台输入。将工具注入到视频页面中,解决跨域问题。 【重新下载错误片段】当部分视频片段下载失败时,点击该按钮,重新下载错误片段。 【强制下载现有片段】将已经下载好的视频片段强制整合下载。可以提前观看已经下载的片段。该操作不影响当前下载进程。 【片段Icon】对应每一个 .ts 视频片段的下载情况。「灰色」:待下载,「绿色」:下载成功,「红色」:下载失败。点击红色 Icon 可重新下载对应错误片段。

使用说明

  • 打开视频目标网页,鼠标右键「检查」,或者「开发者工具」,或者按下键盘的「F12」键

  • 找到 network,输入 m3u8,过滤 m3u8 文件。

  • 刷新页面,监听 m3u8 文件。

  • 找到目标m3u8文件,查看文件内容,是否符合格式。

    • 如下为索引文件,不是真正的视频 m3u8 文件

    • 一般内容有许多 ts 字眼的文件才是我们需要的视频 m3u8 文件。

  • 拷贝这个 m3u8 文件的链接。

  • 打开工具页面,输入链接,点击「解析下载」。

  • 出现片段 Icon,则证明操作成功,耐心等待视频下载。

  • 片段全部下载成功,将触发浏览器自动下载,下载整合后的完整视频。

  • 如果有片段下载失败,则点击对应片段,或点击「重新下载错误片段」按钮。重新下载错误片段。

异常情况

【无法下载,没有显示片段Icon】

  • 一般由于跨域造成。

  • 点击「跨域复制代码」按钮。

  • 打开视频目标网页的「开发者工具界面」,找到 console 栏。

  • 粘贴刚刚复制的内容,回车。

  • 滚动页面到底部,发现工具显示在底部。然后在注入的工具中正常使用。

【下载后的视频资源不可看】

  • 网站对视频源进行了加密操作。不同的视频网站有不同的算法操作。无法通用处理。

  • 一般网站不会有这种情况。爱奇艺,腾讯等大视频网站才会有该安全措施。

实现思路

【下载并解析 m3u8 文件】

  • 直接通过 ajax 的 get 请求 m3u8 文件。得到 m3u8 文件的内容字符串。读取字符串进行解析。

  • 需要注意的是,m3u8 文件不是 json 格式,不能将 dataType 设置为 json。 【队列下载 ts 视频片段】

  • 同样使用 ajax 的 get 请求视频碎片,一个 ajax 请求一个 ts 视频碎片,但关键点在于,下载的是视频文件,属于二进制数据,需要将 responseType 请求头设置为 arraybuffer。xhr.responseType = 'arraybuffer'

  • 使用队列下载,是因为视频碎片太多,不可能一次性请求全部。需要分批下载。

  • 同时由于浏览器同源并发限制,视频同时请求数不能过多。本工具设置为并发下载数为 10。 【组合 ts 视频片段】

  • 看似很难,但其实使用 Blob 对象即可将多个 ts 文件整合成一个文件。new Blob(),传入 ts 文件数组。

  • 这里有个小细节需要注意,需要在 new Blob 的第二个参数中设置文件的 MIME 类型,否则将默认为 txt 文件。 const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' }) 【自动下载】

  • 下载,当然先要获得文件链接,即刚生成的 Blob 文件链接。

  • 使用 URL.createObjectURL,即可得到浏览器内存中,Blob 的文件链接。URL.createObjectURL(fileBlob)

  • 最后,使用 a 标签的 a.download 属性,将 a 标签设置为下载功能。主动调用 click 事件a.click()。完成文件自动下载。

核心代码

【整合及自动下载】

    // 下载整合后的TS文件
    downloadFile(fileDataList, fileName, fileType) {
      this.tips = 'ts 碎片整合中,请留意浏览器下载'
      const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' }) // 创建一个Blob对象,并设置文件的 MIME 类型
      const a = document.createElement('a')
      a.download = fileName + '.' + fileType
      a.href = URL.createObjectURL(fileBlob)
      a.style.display = 'none'
      document.body.appendChild(a)
      a.click()
      a.remove()
    },

是的,涉及新知识点的部分只有上面一小段,其他的都是 JS 的基础应用。

除了 vue.js 文件,本工具代码均包含在 index.html 文件里面。包括换行,一共 540 行代码,其中 css 样式 190 行,html 标签 30 行。JS 逻辑代码 300 行。

罗列这些代码量只是想表明,本工具运用到的都只是 JS 的常见知识,并不复杂。鼓励大家多尝试阅读源码,其实看源码并没有想象中的那么困难。

源码链接

AES 常规解密功能

  • 借助「aes-decryptor.js」,该文件来至 hls.js

MP4 转码功能

  • 借助「mux-mp4.js」,源码来至 mux.js
  • 但 mux.js 存在一个无法计算视频长度的 bug
  • 本人已 fork 该项目,并修复该 bug,修复后的项目链接在这里

第三方接入

  • 在 url 中通过 source 参数拼接下载地址即可,如:http://blog.luckly-mjw.cn/tool-show/m3u8-downloader/index.html?source=http://1257120875.vod2.myqcloud.com/0ef121cdvodtransgzp1257120875/3055695e5285890780828799271/v.f230.m3u8

  • 系统将自动解析该参数

油猴插件

  • 「跳转下载」即新开页面,打开本工具页面,自动携带并解析目标地址
  • 「注入下载」为解决跨域而生,直接将代码注入到当前视频网站,进行视频下载
  • 插件地址点这里
  • 不一定能用,但可以试试。不行就用回老方法试试。
from https://github.com/Momo707577045/m3u8-downloader
----

https://www.blueskyxn.com/202102/4126.html

原作者仓库:https://github.com/Momo707577045/m3u8-downloader

详细介绍请前往原作者仓库

测试链接 https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/hls/xgplayer-demo.m3u8

演示站与介绍请前往右上角博客相关文档

https://www.blueskyxn.com/202102/4126.html


from https://github.com/BlueSkyXN/m3u8-downloader

------

 

由国人开发的免费开源的m3u8视频在线提取下载工具:m3u8-downloader

Media Downloader是一款由国人(曹儒士子)制作的免费开源m3u8(流媒体)视频在线提取下载工具,能够方便地提取在线流媒体,无需浏览器抓包即可方便地提取视频,实现快速、批量下载并支持音频转换。

该工具适用于 Windows & macos,电脑配置至少需要至少 2GB RAM 和 500MB 可用硬盘空间。

除了可以提取在线视频外,还可以直接复制链接,比如腾讯视频、优酷、YouTube等等视频链接,即可解析网页中视频并且进行下载,功能非常强大。

media-downloader 完全免费,所有功能均可免费使用。致力于为用户提供高质量的软件,不收取任何费用。

media-downloader作者主页:https://ziying.site/post/media-downloader-how-to-use/

GitHub开源地址:https://github.com/caorushizi/m3u8-downloader

----------------------------------

 

The-New-M3U8-Downloader

 

现在很多社交网上都有视频上传功能,有时候发现有些视频挺有趣的,想要下载回来保存,但是发现怎么不是我们以前常规看到的 mp4 或者 flv 格式呢?变成了 m3u8 格式了。其实这是一个流串格式,需要用特定的工具才能下载,今天介绍的这款 M3U8-Downloader 就是其中之一.

 

M3U8-Downloader 的使用方法很简单,你只需要将带有 m3u8 的地址粘贴到 URL 处,然后选择你想要保存的视频格式,之后点击「下载」按钮就可以开始下载了。

 

点击下载按钮后,右边的对话框会有当前下载的进度,当到进度条到底的时候就是下载结束了。

其实 M3U8-Downloader 的原理是通过 ffmpeg 来进行片段下载,下载后再进行合并,如果你有 ffmpeg 也可以自己手动下载,不过既然有图形化工具了,当然还是用图形化工具最好了。。

M3U8-Downloader:国内 CDN 高速下载

--------------------------------------------------------------------------

[.NET] m3u8 downloader 开源的命令行m3u8/HLS/dash下载器,支持普通AES-128-CBC解密,多线程,自定义请求头等. 支持简体中文,繁体中文和英文. English Supported.

nilaoda.github.io/N_m3u8DL-CLI/
 

 

下载使用

关于开源

本项目已于2019年10月9日开源,采用MIT许可证,各取所需。

关于跨平台

  • N_m3u8DL-CLI (本项目): 基于 .NET Framework, 不具备跨平台能力. 目前已进入维护阶段.

  • N_m3u8DL-RE : 抛弃历史包袱从零做起, 支持Win/Linux/Mac, 更丰富的功能会在这里出现 ...

N_m3u8DL-CLI

一个简单易用的m3u8下载器,下载地址:https://github.com/nilaoda/N_m3u8DL-CLI/releases

支持下载m3u8链接或文件为mp4ts格式,并提供丰富的命令行选项。

  • 不支持优酷视频解密
  • 不支持气球云视频解密
  • 支持AES-128-CBC加密自动解密
  • 支持多线程下载
  • 支持下载限速
  • 支持断点续传
  • 支持Master List
  • 支持直播流录制(BETA)
  • 支持自定义HTTP Headers
  • 支持自动合并 (二进制合并或使用ffmpeg合并)
  • 支持选择下载m3u8中的指定时间段/分片内容
  • 支持下载路径为网络驱动器的情况
  • 支持下载外挂字幕轨道、音频轨道
  • 支持仅合并为音频
  • 支持设置特定http代理
  • 支持自动使用系统代理(默认行为, 可禁止)
  • 支持m3u8dl链接协议(通过web链接调用本机客户端)
  • 提供SimpleG简易的GUI生成常用参数

命令行选项

N_m3u8DL-CLI

USAGE:

  N_m3u8DL-CLI <URL|JSON|FILE> [OPTIONS]

OPTIONS:

  --workDir                  设定程序工作目录
  --saveName                 设定存储文件名(不包括后缀)
  --baseUrl                  设定Baseurl
  --headers                  设定请求头,格式 key:value 使用|分割不同的key&value
  --maxThreads               (Default: 32) 设定程序的最大线程数
  --minThreads               (Default: 16) 设定程序的最小线程数
  --retryCount               (Default: 15) 设定程序的重试次数
  --timeOut                  (Default: 10) 设定程序网络请求的超时时间(单位为秒)
  --muxSetJson               使用外部json文件定义混流选项
  --useKeyFile               使用外部16字节文件定义AES-128解密KEY
  --useKeyBase64             使用Base64字符串定义AES-128解密KEY
  --useKeyIV                 使用HEX字符串定义AES-128解密IV
  --downloadRange            仅下载视频的一部分分片或长度
  --liveRecDur               直播录制时,达到此长度自动退出软件(HH:MM:SS)
  --stopSpeed                当速度低于此值时,重试(单位为KB/s)
  --maxSpeed                 设置下载速度上限(单位为KB/s)
  --proxyAddress             设置HTTP/SOCKS5代理, 如 http://127.0.0.1:8080
  --enableDelAfterDone       开启下载后删除临时文件夹的功能
  --enableMuxFastStart       开启混流mp4的FastStart特性
  --enableBinaryMerge        开启二进制合并分片
  --enableParseOnly          开启仅解析模式(程序只进行到meta.json)
  --enableAudioOnly          合并时仅封装音频轨道
  --disableDateInfo          关闭混流中的日期写入
  --disableIntegrityCheck    不检测分片数量是否完整
  --noMerge                  禁用自动合并
  --noProxy                  不自动使用系统代理
  --registerUrlProtocol      注册m3u8dl链接协议
  --unregisterUrlProtocol    取消注册m3u8dl链接协议
  --enableChaCha20           enableChaCha20
  --chaCha20KeyBase64        ChaCha20KeyBase64
  --chaCha20NonceBase64      ChaCha20NonceBase64
  --help                     Display this help screen.
  --version                  Display version information.

关于m3u8dl://协议

新增命令行参数:

--registerUrlProtocol          注册m3u8dl链接协议
--unregisterUrlProtocol     取消注册m3u8dl链接协议

URI格式:

m3u8dl://<base64编码的客户端命令行文本>

URI示例:

m3u8dl://Imh0dHBzOi8vZXhhbXBsZS5jb20vYWJjLm0zdTgiIC0td29ya0RpciAiJVVTRVJQUk9GSUxFJVxEb3dubG9hZHNcbTN1OGRsIiAtLXNhdmVOYW1lICJhYmMiIC0tZW5hYmxlRGVsQWZ0ZXJEb25lIC0tZGlzYWJsZURhdGVJbmZvIC0tbm9Qcm94eQ==

URI解码结果:

"https://example.com/abc.m3u8" --workDir "%USERPROFILE%\Downloads\m3u8dl" --saveName "abc" --enableDelAfterDone --disableDateInfo --noProxy

用户文档

https://nilaoda.github.io/N_m3u8DL-CLI/

聊聊

https://discord.gg/SSGwKrjC44

from https://github.com/nilaoda/N_m3u8DL-CLI

(N_m3u8DL-CLI,下载爱奇艺腾讯VIP超清无水印视频

视频解析下载,相关的工具多如牛毛,国外备受欢迎鼎鼎大名的youtube-dl,堪称全能下载工具,各种衍生项目层出不穷,在国内相关的工具也五花八门,诸如annie、m3u8下载器等,功能强大,通杀国内主流平台,在之前的文章中也给大家多次推荐过了。

众多下载工具中,在Github上开源的N_m3u8DL-CLI,功能强大,可解析m3u8链接/文件,实现多线程高速下载,同时支持解密,在相关的工具中,N_m3u8DL-CLI一直备受好评。

N_m3u8DL-CLI,下载爱奇艺腾讯VIP超清无水印视频

N_m3u8DL-CLI是Github上一个开源的命令行m3u8/HLS/dash下载器,通过它可快速解析m3u8连接/文件,实现多线程高速下载,同时它支持普通AES-128-CBC解密,可自定义请求头以及支持自动合并等诸多功能,是一款功能强大的m3u8下载器。

主要特性:

    支持多线程下载、下载限速、断点续传

    支持Master List

    支持直播流录制(BETA)

    支持AES-128-CBC加密自动解密

    支持自定义HTTP Headers

    支持自动合并 (二进制合并或使用ffmpeg合并)

    支持选择下载m3u8中的指定时间段/分片内容

    支持下载路径为网络驱动器的情况

    支持下载外挂字幕轨道、音频轨道

    支持仅合并为音频

    支持设置特定http代理

    支持自动使用系统代理(默认行为, 可禁止)

N_m3u8DL-CLI是一个命令行工具,它支持丰富的命令,在一般使用中,你只需粘贴视频的m3u8地址,工具即可解析实现下载。因此,要用好它,首先的一点是如何获取视频的m3u8


M3U8小科普

    目前网络流媒体传输主要有HLS/RTSP/RTP协议,其中HLS被广泛应用主流视频平台,它的原理是服务端把文件或媒体流按照不同的码率切分成一个个小片段,用户在客户端播放时可以根据带宽和机器性能情况,选择下载播放合适码率的视频流,当传输会话开始时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。

    M3U8文件标记了被分成的大大小小片段的视频信息,包括属性、路径地址、标签等。换言之,只要有了这个M3U8地址或文件,即可通过工具解析下载。


1,获取爱奇艺腾讯的M3U8地址

获取M3U8的方法多样,一般而言最简单的可通过浏览器开发者工具筛选查找,但操作不便,并且多数网站页面上可抓取多个m3u8,对于一般用户而言不易分辨。

在去年,阿刚曾给大家搜集整理过一些超级简单的JS脚本书签合集,里面包含了一些常用的功能性小书签,此次给大家重新整理了一下抓取爱奇艺腾讯视频的js书签。简单方便。

本次整理的书签:

    爱奇艺(支持音轨、高码率、支持按分辨率选择)

    腾讯(支持1080分辨率、支持WV DRM)

    支持VIP视频(需VIP会员登录后)

假设我们要获取爱奇艺某个视频的m3u8,只需在视频播放界面点击刚刚添加的“爱奇艺视频”书签即可,脚本会自动抓取页面上的m3u8,并且可以按照视频分辨率选择下载获取。

2,使用N_m3u8DL-CLI下载

如前面所述,N_m3u8DL-CLI是个命令行工具,需配置环境变量,研究文档中各种命令参数,对于大部分人而言,使用开发者提供的GUI版更加得心应手。

它的使用相当简单,在获取m3u8链接或文件后,在软件中导入文件,设置工作目录、保存的标题、请求头以及其他必要信息后,即可调用N_m3u8DL-CLI开始下载,并且下载完成后会自动调用FFmpeg合并文件。

阿刚在腾讯和爱奇艺做了测试,会员登录后是可以下载到1080P超清画质,VIP视频也可通过此种方式下载,并且下载后是无水印的,当然前提是你必须是VIP会员,拥有播放权限才能获取到m3u8文件进而解析下载。

当然,N_m3u8DL-CLI的实际应用方式多样,针对不同的站点可能还需其他必要信息,更多的玩法可参照作者的项目主页,碍于篇幅有限阿刚这里算是抛砖引玉,想要玩更深入需要学习更多相关的知识了。

最后

截至目前,关于视频解析下载,网络上各种知名工具,在过去不同的文章专题中,阿刚基本上均有给大家推荐过了。

今天专门开篇给大家简单介绍下N_m3u8DL-CLI,算是一个补充吧。其实最重要的是给大家整理更新了一下获取m3u8的脚本书签,这脚本使起来真的相当方便。

最后,喜欢下载视频的,这个方法其实是最棒的!建议大家收藏起来~)

(N_m3u8DL-CLI,下载爱奇艺腾讯VIP超清无水印视频

老话都说术业有专攻,若要实现完美的视频解析下载,必然要通过各种专业工具.

先简单科普

首先互联网多媒体发展至今,技术不断更新迭代,网络流媒体的传输主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,而前者主要以苹果推出的HLS为主要代表,即基于HTTP的自适应码率流媒体传输协议,是目前绝大部分流媒体普遍采用的传输协议。

HLS协议其实很好理解,它的原理是在服务端把文件或媒体流按照不同的码率切分成一个个小片段,用户在客户端播放时可以根据带宽和机器性能情况,选择下载播放合适码率的视频流,当传输回话开始时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。


HLS协议

简单而言,这个M3U8文件标记了被分成的大大小小片段的视频信息,包括属性、路径地址、标签等。换言之,有了这个M3U8播放列表文件,我们便可以通过工具解析并下载这些片段,最后将其合并成一个完整的视频,而这也就是大部分m3u8下载器的原理。

N_m3u8DL-CLI是Github上一个开源的命令行m3u8/HLS/dash下载器,通过它可快速解析m3u8连接/文件,实现多线程高速下载,同时它支持普通AES-128-CBC解密,可自定义请求头以及支持自动合并等诸多功能,是一款功能强大的m3u8下载器。

主要特性:

    支持AES-128-CBC加密自动解密

    支持多线程下载、下载限速、断点续传

    支持Master List

    支持直播流录制(BETA)

    支持自定义HTTP Headers

    支持自动合并 (二进制合并或使用ffmpeg合并)

    支持选择下载m3u8中的指定时间段/分片内容

    支持下载路径为网络驱动器的情况

    支持下载外挂字幕轨道、音频轨道

    支持仅合并为音频

    支持设置特定http代理

    支持自动使用系统代理(默认行为, 可禁止)

从前面的介绍我们知道,要实现下载必须找到m3u8地址,一般我们在视频的播放页面通过浏览器F12快捷键调出开发者工具,可以查找m3u8地址,这也是百试百灵的方法,但这样的操作稍微繁琐了一些,针对国内主流的视频网站,工具作者提供了一些可直接拖放到书签栏的js脚本,简单一键即可获取到m3u8文件。

下载爱奇艺VIP视频

N_m3u8DL-CLI是一个命令行工具,支持丰富的命令,在官方的文档中有着详细的极少,为了方便使用,作者也提供了一个简单的GUI版,通过它你可以快速上手。

在获取m3u8链接或文件后,在软件中导入文件,设置工作目录、保存的标题、请求头以及其他必要信息后,即可调用N_m3u8DL-CLI开始下载,下载完成后会自动调用FFmpeg合并文件。

根据阿刚在爱奇艺的测试,会员登录后是可以下载到1080P超清画质,VIP视频也可通过此种方式下载,并且下载后是无水印的,当然前提是你必须是VIP会员,拥有播放权限才能获取到m3u8文件进而解析下载。

当然,N_m3u8DL-CLI的实际应用方式多样,针对不同的站点可能还需其他必要信息,更多的玩法可参照作者的项目主页,碍于篇幅有限阿刚这里算是抛砖引玉,想要玩更深入需要学习更多相关的知识了。

最后总结

下载工具是个经典的话题,优秀的多线程下载工具比比皆是,且各有千秋,但基本上都可满足我们的一般的高速下载需求,属于必装工具之一。至于视频抓取下载,不存在通杀式的永久工具,通常商业盈利性视频网站需专门的工具适配,目前相较而言,N_m3u8DL-CLI是最简单体验最好的一款。)

-----------------------------------------------------------------------------------------------------------------------------

a downloader for m3u8 video 一款m3u8视频下载解密合并工具.

m3u8视频下载合并器

一款只需要输入m3u8的网址即可完成视频下载、解密和合并操作的工具

1.0的蓝奏云下载地址

github地址

1.0以上的新版本不再免费发布,请自行编译打包

或者是点击打赏获取软件

补充说明

PS:市面上某些视频网站可能出于安全和版权考虑,在下载m3u8文件、key文件和ts文件会有所限制(如加cookie或者是某些token参数),技术和精力有限,暂不考虑解决这种问题,软件不能保证一定能够下载且成功解密,所以请在打赏前慎重考虑一下,有能力的可以看代码,二次开发实现功能

本软件只考虑普通情况下(无需登录)即可观看视频的在线m3u8地址下载合并及本地ts文件的解密合并,其他特殊需要登录的网站暂时不考虑支持

目前已进行了重构,重构的工具类为M3u8Utils,剩下的两个文件VideoUtilVideoUtils保留作为参考

测试的m3u8的视频地址为https://video.dious.cc/20200617/fYdT3OVu/1000kb/hls/index.m3u8

M3u8Utils工具类主要负责解析m3u8文件,会得到视频和密钥等信息,且包含了解密和合并的过程

由于现在使用了自己的下载框架KxDownload,还不准备开源,所以各位下载之后会无法跑起项目,请将错误的地方(应该是只有下载),替换成之前版本下载的方法即可

关于本地合并功能说明

本地合并的功能目前没有考虑复杂的情况,想要使用本地合并m3u8视频,m3u8里的内容需要满足下图的条件

本地合并支持有加密和无加密的,如果有加密,请确保文件夹中存在有key文件,或者你知道key文件的下载地址也可以去把m3u8内容你URI双引号里的内容改掉

程序说明

  •  采用多线程下载,可有效的提高下载速度
  •  内置解密程序,当视频采用了加密可以自动解密
  •  多线程下载优化,多视频下载
  •  根据已下载好的m3u8文件和key文件,对合并本地的ts文件进行解密和合并操作
  •  在线更新

运行说明

需要java1.8环境

详情请查看软件配置说明

使用说明

程序只需要输入m3u8的在线地址,之后即可下载并解密合并成一个mp4文件,由于软件的下载的问题,下载过程中某些ts文件不完整,从而会导致之后合并的mp4少一些片段,完美主义者勿用.

通过猫抓Chrome插件或者F12进入浏览器调试模式,找到具体的m3u8地址(关于获取m3u8地址的详细操作,请参考百度,这里不再赘述)

在程序输入获得的m3u8文件的在线地址,之后,软件会通过此地址进行下载m3u8文件、key文件(如果有加密的话)和ts文件,并进行解密合并,最后会输出一个mp4格式的文件。

截图

由于时间关系,没有截取下载的全部过程


from  https://github.com/Stars-One/M3u8Downloader


一款可以下载m3u8、解密ts文件及合并ts文件的视频下载工具.

(  M3U8Downloader:m3u8下载工具

M3U8Downloader 是一款 m3u8 下载工具,把 m3u8 流媒体下载到特定的本地目录,包含所有的媒体片段。
M3U8Downloader 是 Node 模块,使用 JavaScript 编写,遵循 MIT 开源授权协议,当前已经停止维护。

M3U8Downloader的使用非常简单,在使用以下代码段之前必须先创建一个本地的目录:

var m3u8downloader = require('m3u8downloader');
var downloader = new m3u8downloader("http://www.nacentapps.com/m3u8/index.m3u8", "destination",
function(err, data)
{
    if(err)
        console.log(err);
    else
        console.dir(data)
});

downloader.on('start', function()
{
    console.log("started downloading");
});

downloader.on('progress', function(d)
{
    console.log(d);
});


downloader.on('downloaded', function(d)
{
    console.log(d);
});


downloader.on('complete', function(d)
{
    console.log('done');
});



https://github.com/skimotv/m3u8downloader

此外还有一款 C# 编写的,基于FFmpeg (https://github.com/FFmpeg/FFmpeg) 的 M3U8 下载器 M3U8 Downloader:

https://github.com/nilaoda/M3U8-Downloader

XP 需要安装 Microsoft .NET Framework 4 Client Profile。)

-------------------------------------------------------------------

Simple Bash Script to take a media file, segment it and create an M3U8 playlist for serving using HLS  。

HLS-Stream-Creator

Introduction

HLS-Stream-Creator is a simple BASH Script designed to take a media file, segment it and create an M3U8 playlist for serving using HLS. There are numerous tools out there which are far better suited to the task, and offer many more options. This project only exists because I was asked to look into HTTP Live Streaming in depth, so after reading the IETF Draft I figured I'd start with the basics by creating a script to encode arbitrary video into a VOD style HLS feed.

Usage

Usage is incredibly simple

./HLS-Stream-Creator.sh -[CeflnS2] [-c segmentcount] -i [inputfile] -s [segmentlength(seconds)] -o [outputdir] -b [bitrates]

Deprecated Legacy usage:
HLS-Stream-Creator.sh inputfile segmentlength(seconds) [outputdir='./output']

So to split a video file called example.avi into segments of 10 seconds, we'd run

./HLS-Stream-Creator.sh -i example.avi -s 10

Arguments

Mandatory Arguments:

-i [file]	Input file
-s [s]		Segment length (seconds)

Optional Arguments:

-b [bitrates]	Output video Bitrates in kb/s (comma seperated list for adaptive streams)
-c [count]	Number of segments to include in playlist (live streams only) - 0 is no limit
-k [prefix]	String to prepend to Key path when encrpytion is used (e.g. https://mykeyserver.com/)
-K [Name]	Name of file for decryption key (will have .key appended)
-o [directory]	Output directory (default: ./output)
-p [name]	Playlist filename prefix
-q [quality]	Change encoding to CFR with [quality]
-t [name]	Segment filename prefix
-u [prefix]	Prefix to prepend to segment and manifest paths
-C		Use constant bitrate as opposed to variable bitrate
-e      	Encrypt the HLS segments (a key will be generated automatically)
-f		Foreground encoding only (adaptive non-live streams only)
-h              Print Usage information
-l		Input is a live stream
    -n              Ignore audio track in input file
-S		Name of a subdirectory to put segments into
-2		Use two-pass encoding

Adaptive Streams

As of HLS-6 the script can now generate adaptive streams with a top-level variant playlist for both VoD and Linear input streams.

In order to create seperate bitrate streams, pass a comma seperated list in with the -b option

./HLS-Stream-Creator.sh -i example.avi -s 10 -b 28,64,128,256

By default, transcoding for each bitrate will be forked into the background - if you wish to process the bitrates sequentially, pass the -f option

./HLS-Stream-Creator.sh -i example.avi -s 10 -b 28,64,128,256 -f

In either case, in accordance with the HLS spec, the audio bitrate will remain unchanged.

Multiple Resolutions

As of HLS-27 it is possible to (optionally) specify a resolution as well as the desired bitrate by appending it to the bitrate it applies to:

./HLS-Stream-Creator.sh -i example.avi -s 10 -b 128-600x400,256-1280x720,2000

In the example above, the first two bitrates will use their specified resolutions, whilst the last will use whatever resolution the source video uses.

The format to use is

[bitrate]-[width]x[height]

Note: There are currently no checks to ensure the specified resolution isn't larger than the source media, so you'll need to check this yourself (for the time being).

You should consider the potential ramifications of player behaviour before using this functionality.

Encrypted Streams

HLS-Stream-Creator can also create encrypted HLS streams, it's enabled by passing -e

./HLS-Stream-Creator.sh -i example.avi -e -s 10 -b 28,64,128,256

The script will generate a 128 bit key and save it to a .key file in the same directory as the segments. Each segment will be AES-128 encrypted using an IV which corresponds to it's segment number (the default behaviour for HLS).

The manifests will then be updated to include the necessary EXT-X-KEY tag:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-KEY:METHOD=AES-128,URI=big_buck_bunny_720p_stereo.avi.key
#EXT-X-TARGETDURATION:17
#EXTINF:10.500000,
big_buck_bunny_720p_stereo.avi_1372_00000.ts

Output

As of version 1, the HLS resources will be output to the directory output (unless a different directory has been specified with -o). These will consist of video segments encoded in H.264 with AAC audio and an m3u8 file in the format

#EXTM3U  
#EXT-X-MEDIA-SEQUENCE:0  
#EXT-X-VERSION:3  
#EXT-X-TARGETDURATION:10  
#EXTINF:10, no desc  
example_00001.ts  
#EXTINF:10, no desc  
example_00002.ts  
#EXTINF:10, no desc  
example_00003.ts  
#EXTINF:5, no desc  
example_00004.ts  
#EXT-X-ENDLIST

Using a Specific FFMPEG binary

There may be occasions where you don't want to use the ffmpeg that appears in PATH. At the top of the script, the ffmpeg command is defined, so change this to suit your needs

FFMPEG='/path/to/different/ffmpeg'

H265 details

Check has been added for libx265 to enforce bitrate limits for H265 since it uses additional parameters.

Audio Codec Availability

Because libfdk_aac is a non-free codec, and is not available in all builds, commit 0796feb switched the default audio codec to aac.

However, in older versions of ffmpeg, aac was marked as experimental - this includes the packages currently in the repos for Ubuntu Xenial. As a result, when running the script, you may see the following error

The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.

There are two ways to work around this. If you have the libfdk_aac codec installed, you can specify that it should be used instead

export AUDIO_CODEC="libfdk_aac"

Alternatively, you can update the ffmpeg flags to enable experimental codecs

export FFMPEG_FLAGS='-strict -2'

And the re-run HLS-Stream-Creator.

HLS-23 will, in future, update the script to check for this automatically.

Additional Environment Variables

There are few environment variables which can control the ffmpeg behaviour.

  • VIDEO_CODEC - The encoder which will be used by ffmpeg for video streams. Examples: libx264, nvenc
  • AUDIO_CODEC - Encoder for the audio streams. Examples: aac, libfdk_acc, mp3, libfaac
  • NUMTHREADS - A number which will be passed to the -threads argument of ffmpeg. Newer ffmpegs with modern libx264 encoders will use the optimal number of threads by default.
  • FFMPEG_FLAGS - Additional flags for ffmpeg. They will be passed without any modification.
  • FFMPEG_INPUT_FLAGS - Additional flags for ffmpeg which apply to the input file only. They will also be passed without any modification.

Example usage:

export VIDEO_CODEC="nvenc"
export FFMPEG_FLAGS="-pix_fmt yuv420p -profile:v"
./HLS-Stream-Creator.sh example.avi 10

OS X Users

Segment encryption won't work out of the box on OS X as it relies on arguments which the BSD grep and sed commands don't support. In order to use encryption on OS X you must first install their GNU counterparts

brew install gnu-sed
brew install grep

Note: As of HLS-33 it is no longer necessary to force brew to expose default names (since support has been dropped for --with-default-names).

It should be possible to get HLS-Stream-Creator up and running on a Mac by running the following

# Install Xcode
xcode-select --install

# Install brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install ffmpeg

# Needed for segment encryption
brew install openssl 
brew install gnu-sed 
brew install grep

# Clone the codebase
git clone git@github.com:bentasker/HLS-Stream-Creator.git

Automation

HLS-Stream-Creator was originally created as a short bit of research and has since grown significantly. The consequence of this, is that it was primarily focused on being run manually.

Although still not a perfect solution to automation, an example of automating HLS-Stream-Creator can be found here. Better automation support will hopefully be added sometime in the future (pull requests very welcome).

from https://github.com/bentasker/HLS-Stream-Creator

-------

Tools to create hls playlists using ffmpeg. Originally forked from https://github.com/bentasker/HLS-Stream-Creator 

hls-creator

This script has been forked from https://github.com/bentasker/HLS-Stream-Creator project. Renamed script from "HLS-Stream-Creator.sh" to "hls.sh". Some issues have been fixed + new params.

hls.sh is a simple BASH Script designed to take a media file, segment it and create an M3U8 playlist for serving using HLS. There are numerous tools out there which are far better suited to the task, and offer many more options. This project only exists because I was asked to look into HTTP Live Streaming in depth, so after reading the IETF Draft I figured I'd start with the basics by creating a script to encode arbitrary video into a VOD style HLS feed.

I-FRAME Creator(iframe.sh) is used to generate I-Frame Playlist from existing HLS Playlist.

Pre-requisites

ffmeg must be installed.

Usage

Usage is incredibly simple

./hls.sh -[lf] [-c segmentcount] -i [inputfile] -s [segmentlength(seconds)] -o [outputdir] -b [bitrates]


Deprecated Legacy usage:
	hls.sh inputfile segmentlength(seconds) [outputdir='./output']

So to split a video file called example.avi into segments of 10 seconds, we'd run

./hls.sh -i example.avi -s 10

Arguments

    Mandatory Arguments:

	-i [file]	Input file or UR
	-s [s]  	Segment length (seconds)

    Optional Arguments:

	-o [directory]	Output directory (default: ./output)
	-c [count]	Number of segments to include in playlist (live streams only) - 0 is no limit
	-b [bitrates]	Output video Bitrates in kb/s (comma seperated list for adaptive streams)
	-p [name]	Playlist filename prefix
	-t [name]	Segment filename prefix
	-l		Input is a live stream
	-m		Create HLS Segments only with Video Stream
	-f		Foreground encoding only (adaptive non-live streams only)
	-S		Name of a subdirectory to put segments into

Adaptive Streams

As of HLS-6 the script can now generate adaptive streams with a top-level variant playlist for both VoD and Linear input streams.

In order to create seperate bitrate streams, pass a comma seperated list in with the -b option

./hls.sh -i example.avi -s 10 -b 28,64,128,256

By default, transcoding for each bitrate will be forked into the background - if you wish to process the bitrates sequentially, pass the -f option

./hls.sh -i example.avi -s 10 -b 28,64,128,256 -f

In either case, in accordance with the HLS spec, the audio bitrate will remain unchanged

Output

As of version 1, the HLS resources will be output to the directory output. These will consist of video segments encoded in H.264 with AAC audio and an m3u8 file in the format

#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXTINF:10, no desc
example_00001.ts
#EXTINF:10, no desc
example_00002.ts
#EXTINF:10, no desc
example_00003.ts
#EXTINF:5, no desc
example_00004.ts
#EXT-X-ENDLIST

The alternative audio media playlists with audio segments are created. The appropriate EXT-X-MEDIA entries are added into TLM Playlist and a new attribute "AUDIO=" to each video playlist entry. like :

#EXT-X-STREAM-INF:BANDWIDTH=41014,AUDIO="aac"
test/41014/test_41014.m3u8

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="eng",NAME="ENG",AUTOSELECT=YES,DEFAULT=NO,URI="test_Alt_Audio_Eng_AAC/test_Alt_Audio_Eng_AAC.m3u8"

Using a Specific FFMPEG binary

There may be occasions where you don't want to use the ffmpeg that appears in PATH. At the top of the script, the ffmpeg command is defined, so change this to suit your needs

FFMPEG='/path/to/different/ffmpeg'

Additional Environment Variables

There are few environment variables which can control the ffmpeg behaviour.

  • VIDEO_CODEC - The encoder which will be used by ffmpeg for video streams. Examples: libx264, nvenc
  • AUDIO_CODEC - Encoder for the audio streams. Examples: aac, libfdk_acc, mp3, libfaac
  • NUMTHREADS - A number which will be passed to the -threads argument of ffmpeg. Newer ffmpegs with modern libx264 encoders will use the optimal number of threads by default.
  • FFMPEG_FLAGS - Additional flags for ffmpeg. They will be passed without any modification.

Example usage:

export VIDEO_CODEC="nvenc"
export FFMPEG_FLAGS="-pix_fmt yuv420p -profile:v"
./hls.sh example.avi 10

I-FRAME Creator

Usage

Usage is incredibly simple

Usage : ./iframe.sh -h -l <master playlist location> -t <iframe type >

Retrieve all playlists file from a folder and generate the two iframes playlists :
- byte range based ones
- transport streams based ones.

OPTIONS :
        -h              displays this help
        -l              master playlist location
        -t              byterange or default

        Examples : 
        ./iframe.sh -l /cdn/video_TLM.m3u8 -t default (Not complete yet)
        ./iframe.sh -l /cdn/video_TLM.m3u8 -t byterange

Version       : ./iframe.sh 1.0 (2016/03/14) 
Maintainer(s) : Lebougi 
from https://github.com/lebougui/hls-creator
------ 

相关帖子:https://briteming.blogspot.com/2022/03/m3u8.html 

-----------

在线下载M3U8 video

M3U8是Unicode版本的M3U,用UTF-8编码。”M3U”和”M3U8″文件都是苹果公司使用的HTTP Live Streaming格式的基础,这种格式可以在iPhone和Macbook等设备播放。

m3u8 online video extractor是一个在线的支持m3u8格式视频下载网站,支持下载为TS格式和MP4格式的视频。

https://m3u8.dev/

-----------------------
 

现在大部分视频网站采用 m3u8 视频格式,因此需要先抓取到m3u8地址下载,比如腾讯视频https://v.qq.com/x/cover/x0xc94s4x8jdrpm.html ,

通过 idm或者Chrome扩展-HDS / HLS Video Downloader https://chrome.google.com/webstore/detail/hds-hls-video-downloader/gelfgldejnhgpjcbnfpkglhpelajafao 获取m3u8地址。  

------------------------

m3u8

M3U是一种播放多媒体列表的文件格式,它的设计初衷是为了播放音频文件,比如MP3,但是越来越多的软件现在用来播放视频文件列表,M3U也可以指定在线流媒体音频源。很多播放器和软件都支持M3U文件格式。
M3U8是Unicode版本的M3U,用UTF-8编码。"M3U"和"M3U8"文件都是苹果公司使用的HTTP Live Streaming格式的基础,这种格式可以在iPhone和Macbook等设备播放。

以上来自维基百科解释。。

m3u8是HTTP Live Streaming直播的索引文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

优酷视频播放的文件就是m3u8格式。

m3u8格式的文件用QQ影音这样的软件没法直接播放的,这就需要将m3u8转换为mp4格式了,推荐一个非常好用的命令行工具ffmpeg 。

ffmpeg

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

直接在官网下载就好 https://ffmpeg.org/ ,然后打开命令行直接输入ffmpeg -i "https://pl-ali.youku.com/playlist/m3u8?vid=XMjg5MDQxOTc2MA&type=mp4&ups_client_netip=3b6d992c&utid=M196FRgJHVwCAXb3FB8gYVHW&ccode=0502&psid=f50f79c10a8678682848a73d82d3716a&app_ver=1.8.1&duration=298&expire=18000&drm_type=1&drm_device=7&play_ability=5376&media_type=standard,subtitle&ups_ts=1568551492&onOff=0&encr=0&ups_key=11ea864efe421edbefa4aaa770c2b741" -vcodec copy -acodec copy -absf aac_adtstoasc 不能说的秘密短片.mp4 等待一会就能下载到本地。

当然也可以将mp4转换为m3u8格式,直接ffmpeg -i 不能说的秘密短片.mp4 -c copy -bsf h264_mp4toannexb 不能说的秘密短片.ts ,然后再将ts文件切片生成m3u8文件。

不过用命令行有点麻烦而且对普通人有点难度,还好有人开发了M3U8批量下载器,复制上面的m3u8地址就能直接下载了。

有些网站使用的是 m3u8 格式来播放视频,找到m3u8文件地址就可以用ffmpeg来下载了。
ffmpeg -i "http://xxx.m3u8" -vcodec copy -acodec copy -absf aac_adtstoasc 下载的视频名称.mp4

 -------

批量下载m3u8文件

将需要下载的文件直接填写到 list.json 数组中即可进行批量下载。

这里主要是为了解决 .m3u8 系列的文件下载问题。只需要将文件中的下载文件列表整理成 JSON 的数组类型放置在 list.json 中即可。

安装:

npm i

执行下载

node .

下载位置

默认执行下载后,文件会存储在当前目录的 downloads 文件夹中。

image

 from https://github.com/lecepin/batch-download

-----------------------------------------------------------------

m3u8(HLS)下载器 流媒体视频下载插件 可下载Netflix视频

Stream Recorder最受欢迎的 Http Live Streaming (HLS) 下载器,一个流媒体视频下载插件,可对Netflix视频下载,Twitter视频下载等等,使用 Stream Recorder,可以轻松保存 HLS (m3u8) 格式的实时和存档视频,更重要的是,如果视频文件类型是mp4格式,可以使用独有的视频采集功能直接录制视频。下载的音频和视频数据无需重新编码即可转换为具有相同质量的 mp4,此转换在扩展内部完成,无需使用外部服务器。

流媒体视频下载插件地址(Chrome商店):Stream Recorder – 将 HLS 下载为 MP4-
https://chrome.google.com/webstore/detail/stream-recorder-download/iogidnfllpdhagebkblkgbfijkbkjdmm

-----------------

如何下载转换m3u8视频到mp4文件

目前我们网页中存在着大量的mp4格式和m3u8格式的视频资源,我们知道可以通过X浏览器的资源嗅探功能直接下载页面中的mp4格式的视频资源,虽然我们也可以通过资源嗅探的功能获取页面中m3u8视频的链接地址但是却无法直接下载。本文介绍一下X浏览器配合1DM下载器下载.m3u8视频并自动转换为.mp4格式。

下载转换m3u8视频需要配合1DM下载器,我们可以安装1DM下载器作为X浏览器的第三方下载器,详情参考如何绑定第三方下载器

接下来我们通过X浏览器打开m3u8视频地址。并通过页面工具菜单中的“嗅探媒体资源”选项获取视频地址。如下图所示。


 当我们嗅探成功后,会弹出一个视频工具条,这时我们可以通过工具条中的“下载”按钮下载视频:


 最后,1DM下载器会自动解析.m3u8文件,并且弹出对话框列出可供选择的分辨率,您根据需要选择合适的分辨率进行下载即可。


 1DM下载器解析m3u8合并成.mp4文件都是自动的,非常方便。如果你经常有从网页下载视频的需求,推荐您使用X浏览器 + 1DM下载器的组合。 Enjoy it ! 

from https://www.xbext.com/tutorials/how-to-download-m3u8-to-mp4/

------

万能下载器,一键下载抖音西瓜爱奇艺腾讯无水印视频

视频下载是个老生常谈的话题,在Windows中各种优秀的下载工具多不胜数,诸如在国外备受好评的神器youtube-dl,堪称是一站式的全能解析下载工具,除它之外,各种视频平台的专属下载工具也层出不穷,阿刚在之前的文章中已经整理过许多相关专题了。

最近有一款安卓端的万能下载工具,使起来相当顺手,推荐给大家。

万能下载器,搞定48个平台的视频下载工具

万能下载工具,是一种网络视频综合下载工具,内置下载管理功能,可解析下载包括抖音、西瓜、快手等国内主流视频平台的视频,同时内置诸如音视频提取、九宫格切图等实用小工具,是一款“万能”的下载工具。

支持48个平台

万能下载器的主要功能是解析下载视频,根据APP内的列表所示,目前已经支持包括抖音、快手、B站、头条、微博、油管等国内外48个平台,它的使用相当简单,你只需粘贴视频链接(分享链接),工具自动开始解析,并添加下载。

目前诸如抖音、西瓜等视频平台,万能下载器可解析出高清无水印的视频。除了国内主流平台外,它还支持TikTok、油管、Vimeo等国外视频平台的下载,当然前提是你的手机可以正常访问这些网站。

在视频下载这方面,万能下载器还支持包括淘宝、京东等商品视频的下载,方法也同样简单,复制粘贴商品分享页即可开始解析。

除了自动解析下载平台上的视频外,工具还内置了一个方便的M3u8下载器,你只要有视频的M3u8地址即可一键下载,并且自动合并成MP4文件,不过这个M3u8下载器功能有些简单,它只支持在线的M3u8地址。


其他实用工具:

除了解析下载视频外,万能下载器还内置了几个小工具,阿刚这里就简单说几个了。

资源嗅探:内置了一个简易的浏览器,访问网站后,可以一键解析出网页中包含的视频、音频、图片等文件,实现批量下载。功能简单,但是非常的实用~

壁纸/头像下载:一个简单的手机壁纸和头像下载功能,直接抓取展示了各种不同风格和分类的壁纸以及头像。

音乐下载:一个可有可无,毫无亮点的小工具,只能下载标准音质的VIP和收费音乐,

更多功能:主要是视频提取音频、九宫格切图以及视频转gif的小功能


小结:

安卓平台的自由性,让各种工具软件可玩性更高,一个视频下载,你甚至无需打开电脑,仅通过一个简单的APP即可完成。

其实这种万能下载器,在安卓平台上屡见不鲜了,同名的工具就有好几个~但好在工具用着还不错,需要的同学可以下载试试了。

---------------------------------------------------------

用IDM下载M3u8,下载无水印高清视频


万能下载器提供了一个建议的M3u8下载器,实际上在视频下载中,M3u8是不可或缺的重要部分,如果你要下载,最好的方式必然是通过Windows平台。


首先,目前的网络流媒体的传输主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,其原理简单而言,在服务端把文件或媒体流按照不同的码率切分成一个个小片段,用户在客户端播放时可以根据带宽和机器性能情况,选择下载播放合适码率的视频流,当传输会话开始时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。


简单而言,这个M3U8文件标记了被分成的大大小小片段的视频信息,包括属性、路径地址、标签等。换言之,有了这个M3U8播放列表文件,我们便可以通过工具解析并下载这些片段,最后将其合并成一个完整的视频,而这也就是大部分m3u8下载器的原理。


1,获取视频的m3u8

m3u8包含了视频流的地址,实现下载的前提是拿到这个文件,获取它的方法也多种多样,最常见的方式是通过浏览器F12开发者工具,这也是百试百灵的方法,但对于小白来说面对让人眼花缭乱的各种地址,筛选查找出真正的m3u8地址也非易事。


2,使用工具下载

获取到M3U8后,下一步只需挑选一款合适的下载工具下载即可,这方面的工具多如牛毛,例如之前强烈推荐过的N_m3u8DL-CLI,它就是一款专业强大的m3u8下载器。当然我们熟知的IDM,同样也可以下载。


1,使用记事本打开M3U8文件,直接全选复制

2,打开IDM,从剪切板中添加批量任务,添加下载队列

3,由于下载的都是ts分段小视频,全部下载完成后,还需要使用工具将其合并成MP4,这方面工具有很多,比如ffmpeg,或者直接使用小工具TS Merger Tools。

---------------------------

M3U8-Downloader,简单实用的M3U8下载工具,

M3U8-Downloader是基于Electron框架开发的一款可以下载、播放HLS视频流的工具,它简单易用,导入M3U8后可快速下载并自动合并视频。


主要功能特性:

    支持AES-128/196-CBC加密自动解密

    支持多线程下载、批量下载

    支持自定义HTTP Headers

    支持自动合并

M3U8-Downloader工具相较于之前推荐的N_m3u8DL-CLI,它更加简洁方便,支持HLS协议点播源、本地M3U8文件下载、M3U8 直播源。使用时导入地址/文件即可,同时也支持批量下载。

M3U8-Downloader默认下载后自动删除所有分段ts,并合并为MP4,你也可以单独切换到合并功能中,手动选取视频进行合并。


小结:

当获取视频M3U8文件后,视频的下载便不费吹灰之力。以上面介绍的例子来说,通过此方式可以下载到爱奇艺、腾讯会员的视频,并且是无水印的。

今天的文章其实很简单,那个万能下载器,主要是用来下载各种短视频,简单又好用。顺便再给大家说了说爱奇艺腾讯平台上的视频下载。

----------------------------

xihttps://github.com/puemos/hls-downloader, 并不能sniff video.

https://github.com/puemos/hls-downloader/releases

--------

m3u8[m3u8-downloader] 视频在线提取工具 流媒体下载 、视频下载 、 m3u8下载 、 B站视频下载 桌面客户端 windows mac。

https://downloader.caorushizi.cn/guides.html

MediaGo

快速开始   •   官网   •   文档   •   Discussions

GitHub Downloads (all assets, all releases) GitHub Downloads (all assets, latest release) GitHub Repo stars GitHub forks

Intro

本项目支持 m3u8 视频在线提取工具 流媒体下载 m3u8 下载。

  • ✅  无需抓包: 使用软件自带浏览器可以轻松嗅探网页中的视频资源,通过嗅探到的资源列表选择自己想要下载的资源,简单快速。
  • 📱  移动播放: 可以轻松无缝的在 PC 和移动设备之前切换,下载完成后即可使用手机观看视频。
  • ⚡️  批量下载: 支持同时下载多个视频和直播资源,高速带宽不闲置。

Quickstart

运行代码需要 node 和 pnpm,node 需要在官网下载安装,pnpm 可以通过npm i -g pnpm安装。

运行代码

# 代码下载
git clone https://github.com/caorushizi/mediago.git

# 安装依赖
pnpm i

# 开发环境
pnpm dev

# 打包运行
pnpm release

Releases

v2.2.3 (2024.7.06 发布)

更新日志

  • 设置中添加【自动更新】开关:仅更新 release 版本,beta 版本不会自动更新
  • 下载表单中增加【批量更新】
  • 新增 Linux 版本发布
  • 载时自动选择清晰度最高的视频
  • 新增【清空缓存】&【无痕模式】
  • 自定义选择安装位置
  • 修复了一些 bug

技术栈

鸣谢

N_m3u8DL-RE 来自于 https://github.com/nilaoda/N_m3u8DL-RE

from https://github.com/caorushizi/mediago

(  MediaGo - 免费开源 m3u8 视频下载工具

免费开源 m3u8 视频下载工具「MediaGo」可以嗅探网页中的 m3u8 视频,之后在资源列表选择自己想要下载的资源。支持批量下载功能,同时软件还提供了 Windows 和 macOS 客户端。

功能介绍

    无需抓包:使用软件自带浏览器可以轻松嗅探网页中的视频资源。
    移动播放:可以轻松无缝的在 PC 和移动设备之前切换,下载完成后即可使用手机观看视频。
    批量下载:支持同时下载多个视频和直播资源。

项目地址:
https://github.com/caorushizi/mediago)

-----

M3U8-Downloader 支持多线程、断点续传、加密视频下载缓存。

tools.heisir.cn/HLSDownload 

M3U8-Downloader 直接下载

M3U8-Downloader是基于Electron框架开发的一款可以下载、播放HLS视频流的APP,功能特点如下:

功能 支持
HLS协议点播源
自定义Http协议头下载
自定义KEY和IV解密
本地M3U8文件下载
M3U8 直播源
标准 AES-128-CBC加密
标准 AES-196-CBC加密
标准 AES-256-CBC加密
非标准 AES-*-CBC加密 ㄨ(可定制)
网页嗅探视频源

M3U8-Downloader

功能规划

mermaid-diagram-20210328004859

获取M3U8视频地址

在chrome浏览器打开视频网页,按下F12,页签点击到Network页面,在Filter框里输入"m3u8",然后按F5刷新页面,如果网页里的视频使用的是HLS源,就可以在这里捕获到视频流地址,然后选中右键 Copy -> Copy Link Address. 提供m3u8源地址,下载并无损转码Mp4文件

自定义头添加-视频教程

下载可执行包

前往百度网盘下载

链接:https://pan.baidu.com/s/14zaMkxgfTC0HSge-Ze6EpQ 
提取码:m3u8 
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V1的分享

Github 下载

运行源码

NodeJS开发环境搭建

安装NodeJs最新版,NodeJs Download

Clone 代码

在任意文件夹下新建一个文件夹存放代码,并执行以下命令

cd newdir

git clone https://github.com/HeiSir2014/M3U8-Downloader.git .

Yarn 环境安装

npm install yarn -g

Package 依赖安装

yarn

ffmpeg-static 安装超时,可以尝试使用镜像:

FFMPEG_BINARIES_URL=https://cdn.npmmirror.com/binaries/ffmpeg-static yarn

运行M3U8-Downloader

yarn start

打包发布

//windows 平台打包
yarn pack-win

//mac 平台打包
yarn pack-mac

Enjoy it。

from https://github.com/HeiSir2014/M3U8-Downloader

 
 

 

 

 



 

 


No comments:

Post a Comment