论如何下载一个在线的 m3u8 文件到本地成为一个 mp4! | 您所在的位置:网站首页 › 电脑怎么播放m3u8视频文件呢 › 论如何下载一个在线的 m3u8 文件到本地成为一个 mp4! |
正文共: 2381字 7图 预计阅读时间: 6分钟 一、前言现在比较常见的视频流媒体,大部分都是 m3u8 格式的,而对于 m3u8 格式的视频而言,如果你下载过,你会发现它就是一个文本文件,大概也就只有几十 kb,从磁盘大小来看,应该也知道它并不是一个直接的视频文件。 而假如我们想要下载对应的视频文件,直接下载 m3u8,当然是达不到目的的,那么本文就来说说,如何直接下载一个网上的 m3u8 文件,保存成一个比较常规的 mp4 文件。 这个在 Windows 下,应该是有现成的工具可以完成,但是 Mac 就没有了,我也没试过 Windows 的工具,有需要自行搜索。 二、下载一个 m3u8 2.1 什么是 m3u8说到 m3u8 就要先说说 HLS(HTTP Live Streaming)。HLS 是 Apple 公司针对 iPhone、iPod、iTouch 等移动设备,而研发的基于 HTTP 协议的流媒体解决方案。在 HLS 技术中,Web 服务器可以向客户端提供接近实时的音视频流,但是它又是使用的标准的 HTTP 协议。所以基本上,比较大型的点播直播类服务,都是基于 HLS 的。 而该技术的原理,就是将视频文件或者视频流,进行切片(ts文件),并建立索引文件(m3u8),它支持的视频流编码为 H.264,音频流编码为 AAC。 简单来说,基于 HLS 的视频流,会将完整的视频,切割成一个个比较小的视频片段(ts 文件),然后根据协议组合成一个 m3u8 文件。这些比较小的 ts 文件,是可以单独播放的。而视频播放器,拿到 m3u8 文件之后,根据对其内 ts 片段的索引,连续播放不同的视频片段,来达到流畅的播放效果。 2.2 下载的 m3u8 文件说这些概念都没用,我们来看两个真实的被下载的 m3u8 文件。 这种 m3u8 文件就还是比较清晰的,能看到它一个个的片段。但是需要注意的是,这里的片段,全部是基于域名的相对地址,也就是说,这样一个 m3u8 文件,你丢到播放器里,是无法播放的,但是如果你记录了原始下载这个 m3u8 的链接,它在播放器里是可以正常播放的。 当然,如果你修改这个 m3u8 文件,将它相对路径拼接上域名地址,也是可以达到播放的效果的。 再来看看另外一种 m3u8 文件,它其内的 ts 片段,都是完整地址。 像这种具有完整地址的 ts 片段,哪怕你将它保存成一个本地的文件,播放器依然是可以直接播放的,不过这里本质上依然是在在线播放。 这两中 m3u8 文件,虽然有细微的差别,但是它们都是基于标准的协议。 简单总结一下: m3u8 不是视频内容的文件,它占用的磁盘空间非常的小。 m3u8 文件,如果其内的 ts 片段,是完整地址,则可以保存后播放,否者只能在线播放。 播放器播放 m3u8 文件的时候,实际上,还是在线从线上获取的视频流进行播放,所以是存在失效的情况的。 暂时知道这三点就可以了,接下来我们再看如何将一个 m3u8 文件,下载成一个 mp4 视频文件。 三、ffmpeg好了,不卖关子了,这里下载 m3u8 会需要使用 ffmpeg。 ffmpeg 是一套可以用来记录、转换音视频,并将其转化为流的开源程序,采用 LGPL 或 GPL 协议许可证书,很多大型的音视频软件,内部都是基于 ffmpeg 的。不了解不要紧,总之知道它对操作 ffmpeg 非常的方便。 如果本机上没有,就需要安装了。在 Mac 下,使用 homebrew 下载 ffmpeg 非常的方便。 brew install ffmpeg等待安装成功的提示就好了。 如果已经安装的,最好也使用 brew 命令确认一下,有以下输出,表示没问题。 工具配置没什么好说的,没安装的可以借助搜索引擎。 配置好 ffmpeg 的环境之后,只需要一行命令,就可以自动下载一个远端的 m3u8 文件,并且以一个 mp4 格式保存。 ffmpeg -i "m3u8_file_uri" "save_video.mp4"到此,如果 m3u8 的链接正确可播放,就会开始下载,等待下载完成就可以了,最终会在指定目录下,保存 save_video.mp4 文件,它就是最终我们下载的离线视频文件。 大部分情况下,我们没办法直接获取到 m3u8 的链接,一般通过浏览器的调试工具,或者抓包的方式来获取。 而如果我们只是需要下载一些常见的视频网站的视频的话,Github 上,还有一个开源库,soimort/you-get ,就可以解决你的需求。 它只需要传递一个视频的地址,就会全自动下载。它的原理是去解析视频网站,拿到真实的播放地址,进行下载。而且例如 YouTube 等视频网站,如果有带有字母,能识别的话也会自动识别一同下载,最终以 SubRip 格式保存字母。 而 you-get 依赖 Python 和 ffmpeg 的,所以要提前安装它们。 如果你已经配置好 Pyhone3 的环境,安装 you-get 非常的简单。 pip3 install you-get安装之后,就可以通过 you-get 命令进行下载了。 显示的信息还是很完整的,而且有标准的下载进度。跟多细节,可以直接看 Github 上的文档。 you-get: https://github.com/soimort/you-get 如果是比较知名的视频网站,还是推荐使用 you-get ,它本身支持的网站也很多(文档上有支持的标识),基本上做到了一键下载,支持的网站太多了,这里就不一一截图了,基本上国内外的大点的视频网站都有,不过具体哪些能下载,就要具体问题具体分析了。 有兴趣可以去看看: https://github.com/soimort/you-get#supported-sites 今天在承香墨影公众号的后台,回复『成长』。我会送你一些我整理的学习资料,包含:Android反编译、算法、设计模式、Web项目源码。 推荐阅读: 手写你的第一个 Dalvik 版的 HelloWorld ! 学编程,先学如何像程序员一样思考!!! 看完九篇字体系列的文章,你还觉得我是在说字体? 通过 PackageManager 获得你想要的 App 信息! 阿里全球首发的规约插件,所有细节都在这里!!! 目前5000+人已关注加入我们
点赞或者分享吧~ 点击『阅读原文』查看更多精彩内容 |
CopyRight 2018-2019 实验室设备网 版权所有 |