实际上采集全网视频也没那么难
大家好,我是辰哥。
今天来教大家如何下载全网视频,这里的全网就是你理解的全网。全网的视频搜索接口已经有第三方制作好了,这里就直接使用,获取到视频播放页面之后,程序自动下载视频。下面会以实战为主,手把手教你如何实现。
涉及核心知识点:
m3u8格式视频解析
网络视频请求
视频的合并
以下是精彩内容,不容错过(哈哈哈)
这里的全网搜索来源于第三方(第三方已经写好了搜索接口),咱们直接在第三方的基础上去完成。实现视频全网搜索。下面电影:唐人街探案3为例。(其他电影、电视剧、动漫也是可以的,悄悄告诉你,也支持vip类型视频)
http://www.52xmn.com/so.php?so唐人街探案3&from=360
咱们这里是模糊搜索(关键字:唐人街探案3),可以搜索回来相关的视频,咱们选择第一个:唐人街探案3。下面开始讲解如何下载。
点击第一条搜索结果后,进入到播放页面:
http://www.52xmn.com/m/fqLqaRH4S0r1TR.html
查看网页源代码,(这里网站设置了无法按F12或者鼠标右键,可以先在网页按了F12在访问上面这个链接)。
查看网页源代码,没有找到视频的源地址,说明极有可能是ts(m3u8)的格式(目前很多视频都是采用这种格式)。
接着开始查看network数据包,最后找到下面数据包(index.m3u8)。
获取到这个链接,在浏览器访问之后,下载得到index.m3u8文件
https://vod.bunediy.com/20210430/36JdJMQn/index.m3u8
这个文件里面有很多链接(实际上是整个视频分割很多段小视频,每一个小视频对应一个链接,每一个小视频大概在几秒左右)。
通常index.m3u8的文件里面链接是ts的后缀,现在可以看到是image格式。如果直接下载为image格式的话,无法打开。这里改为mp4的格式化后,下载后正常打开(并且还是高清的)
这里随机选择了一个下载,成功播放出来,下面把index.m3u8里面的所有分段视频下载,然后合并成一个完整的视频。
上面的讲解都是手动下载index.m3u8,然后把image改为mp4格式,再去下载,现在使用程序去下载。自动化完成这些操作。
1.请求index.m3u8
请求结果如下:
2.下载视频
思路:提取里面每一个链接,,然后下载保存成mp4的格式,最后将这些mp4视频进行拼接合并。
提取结果如下:
提取到视频链接后,下面开始下载
name是保存视频名称,v_url是上面的视频链接
这么定义了count,从1开始,目的是将这些分段视频保存为:1.mp4、2.mp4、.....,这样可以方便后面进行按顺序合并。
最终保存到文件夹mp4中
全部下载好之后,一共是1618个分段视频
由于是高清版本视频,1618个分段视频大小一共是1.17G
合并视频的话,之前使用过cmd的方式,不过从读者的反馈来看,对于非window的读者来说,很多不便。那么本文将采取另外一直方式(纯python)
相信大家也看过了几天写的一篇文章(实战|惊呆了,Python竟然能剪辑视频!),里面就有介绍视频合并的方法,本文就采用该方法去合并这些分段视频。
PS: VideoFileClip不能一下子合并太多的视频,这里是1618个,一次性合并的话会报错,所以这里分开合并成大片段,然后在合并成完整视频
这里以50个为界限进行合并,1618/50=33(取整),最后再将33个大片段合并成完整视频。
合并效果:
这里成功将前面50个小片段合成完毕,接着将剩下的全部合并
这样我们就可以将1618个小片段合并成完整的视频。
本文涉及核心知识点:
m3u8格式视频解析
网络视频请求
视频的合并
最后说一声:原创不易,求给个赞
为了大家方便学习,辰哥已经把本文的完整源码上传,需要的小伙伴可以去辰哥朋友圈免费领取。
推荐阅读