mac环境下下载并播放blob视频


今天想下载一个tx的视频,像往常一样,在chrome下打开,f12调出控制台,定位到视频所在位置,复制url,跳转到url..结果404 not found。仔细一看,这个视频url是这样的blob:https://xxxx。摸鱼20年,从来没见过这样的协议,但是它确实是在视频的src属性上,应该就是了。直接去掉blob前缀,依然无效。然后搜索了一下blob到底是个什么东西。

blob:https并不是一种协议,而是html5中blob对象在赋给video标签后生成的一串标记,blob对象包含的数据,浏览器内部会解析。直白一点的理解就是,网站将视频链接给隐藏了。对此,解决的办法就是直接在media中查看加载的视频文件。

本以为到这里就可以下载视频了,但是,打开media后,并没有任何内容,而页面上视频却正确的加载并播放了。考虑到长视频可能是使用了xhr,我又查看了一下xhr文件,果然有。但是却是一堆的文件。细看是ts文件,说明视频网站将视频资源分段了,又搜索了一下发现这是一种新的协议,m3u8。

m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。m3u8准确来说是一种索引文件,使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。

因此,我们只要找到m3u8文件就可以了。一番搜索,我发现了m3u8文件,并且还对应着不同的清晰度。选择了一个m3u8文件下载后,打开发现里面确实都是ts文件的链接,应该就是将整个视频分段了。m3u8文件又应该如何下载。

再次Google,发现了两个工具:ffmpeg和vlc播放器。

ffmpeg是一个命令行工具,是视频处理最常用的开源软件,它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。

具体用法不多介绍,简单说一下:ffmpeg命令为5个参数 ffmpeg {1} {2} -i {3} {4} {5}

1是全局参数, 2是输入文件参数, 3是输入文件, 4是输出参数,5是输出文件。ffmpeg可以直接下载m3u8文件的视频,只需要用以下命令ffmpeg -i x.m3u8 x.ts即可自动下载m3u8播放列表中的视频并拼接。但是实际使用中并未成功。另一个用法是用ffmpeg对ts格式进行转码:ffmpeg -y -i x.ts -c:v libx264 -c:a copy -bsf:a aac_adtstoasc x.mp4。使用此命令对下载的ts文件进行转码也出现错误。。。可能是我打开方式不太正确。

然后说一下vlc播放器。vlc播放器可以直接加载m3u8文件进行播放,如需下载,只需要在导入url时设置一下即可,这也是我目前成功的一种方法。

还有一种比较方便的方法可以直接下载m3u8视频。使用chrome插件,HDS-HLS-Video-Downloader,可直接捕获网页中的m3u8文件进行下载(虽然下载后的ts视频无法播放)。


评论
 上一篇
十大排序算法整理 十大排序算法整理
十大排序算法整理总体分类首先解释一个概念,算法的稳定性:指序列中两相同的相邻元素在两趟排序的过程中相对位置是否发生改变,不改变为稳定的排序算法。 根据这个概念,我们可以对排序算法进行分类: 稳定的排序算法:插入排序,冒泡排序, 归并排序,
2020-04-17 Master-cai
下一篇 
python常用库之collections与itertools python常用库之collections与itertools
python常用库之collections与itertools最近看题解的时候发现好多问题可以直接使用内置库函数解决,及优雅又高效(开挂实锤)。下面依次来介绍这两个包的常见用法。 collectionscollections是Python内
2020-03-27
  目录