视频网站的工作原理-->m3u8视频文件的提取与解析(理论)

目录

一、视频网站的工作原理

二、抓取视频步骤

2.1、找到m3u8文件

2.2、把m3u8下载到ts文件

2.3、ts文件合并为mp4文件


一、视频网站的工作原理

        古老的视频网站的视频一般是在源码放一个,用户点击播放视频,会跳转到src的连接进行视频资源的获取进行播放。

缺点:视频加载速度慢

        正常的视频网站,用户上传视频或者获取到的视频资源-->转码(把视频进行处理,分成2K,1080,标清等画质)-->切片处理(把一个完整的视频进行切片,例如一个60分钟的视频,分割成很多个几十秒的视频),用户在移动进度条时,会加载这一部分的切片视频内容(这时不必加载整个视频)。

        但需要一个文件进行记录:1、视频播放顺序  2、视频存放的路径-->保存这些东西的文件-->统一规定为M3U8文件-->但本质上是文本

优点:视频加载速度快

关键词:转码、切片、

二、抓取视频步骤

2.1、找到m3u8文件

1)向页面发起请求,看页面源代码是否在video标签(有时不是video标签,是video被其它标签包含)包含了m3u8链接,包含则直接请求到该链接即可;

2)页面源代码不包含m3u8链接(找video),则使用抓包工具,抓取XHR类型的包(js处理的数据包),查看哪一个链接存在m3u8的具体链接,请求到该链接即可获取m3u8文件;

3)下面是一种m3u8的反爬过程

        假设我们访问了目标网站的54812-1-1.html文件,客户端发起一个请求,服务器响应请求返回数据包(这时的数据包包含了动态生成的一个note=xxxxx),我们在点击播放视频时,会向服务器在次发送一个请求(这时的请求包含了服务器第一次返回给我们的note=xxxxx),服务器响应(这时服务器会对比我们带过去的noet=xxxx是不是和第一次的相同,相同则返回内容,不同则重复第一次请求的过程,或者不返回视频)并把视频文件返回,视频开始播放。

问题:

        第一次直接请求到m3u8文件可能会被反爬,拿不到文件

解决办法:

        在请求时,应该先向服务器发起一次请求拿到服务器给我们的note=xxxx,然后在第二次发送请求拿到m3u8文件;

视频网站的工作原理-->m3u8视频文件的提取与解析(理论)_第1张图片

2.2、把m3u8下载到ts文件

1)获取到了m3u8文件链接,直接发送请求即可获取到m3u8文件;

2)使用文件的I/O操作即可(注意要分好每一部分视频的顺序,最好有规律命名);

3)在进行文件的I/O操作时,数量很多,需要提速,使用多线程、携程、多进程等方法提速;

4)保存的文件后缀应该是.ts。

2.3、ts文件合并为mp4文件

1)存在很多个小的ts文件,需要合成一个大的mp4文件-->剪辑工具合成(quicktime);

2)代码合成(这个不知道咋弄);

你可能感兴趣的:(爬虫,Python,音视频,python,网络爬虫)