网页视频抓取软件排行(和入门ffmpeg开FFmpeg官方网站有了神器何不自己写个工具)

优采云 发布时间: 2021-09-11 19:06

  网页视频抓取软件排行(和入门ffmpeg开FFmpeg官方网站有了神器何不自己写个工具)

  前几天,有同学说想下载网站视频,找不到连接。他问我是否可以做些什么。当时觉得应该很简单,就说抽空看看。然后它分析了目标网页,并试图从网页的源代码中找到链接,但失败了。 F12调出开发者工具,进入NetWrok,看到网页是通过ajax发起的xhr请求获取的视频连接。难怪页面元素里没有下载地址。请求是一个 m3u8 格式的文件。我查了一下这是一个支离破碎的流媒体。文件,然后到处找工具下载这个格式文件,不是很理想。很多都是分片后直接下载的ts文件,但是这个网站是加密的,不能直接播放。最后发现ffmpeg视频插件神器,视频转码、剪切、合并、播放都不是问题。它还支持多个平台。

  FFmpeg FFmpeg 介绍和入门

  ffmpeg 开启 FFmpeg 官方网站

  有了神器,何不自己写个工具自己下载呢?当我准备开始时,我被如何获得连接的问题阻止了。本来只是想写一个小爬虫,爬取网页连接。结果不行,ajax动态发起的请求的网页元素里没有数据,对js不熟悉。我不知道如何获得这种数据。同学们可以手动打开浏览器F12找到连接吗?这不是我的风格:) 然后继续各种搜索,得到结果,自己实现浏览器,拦截对网页的所有请求,你一定会得到的。经过筛选,我们得到了三个方案:

  1.WebBrowser.

2.GeokoFx.

3.CefSharp.

  首先尝试了WebBrowser,目标网站无法直接打开网页,于是我换了谷歌浏览器,修改了UserAgent来打开,但是网页没有完全显示出来,所以放弃了。然后,可以直接打开GeokoFx,速度也不错,但是有些连接点击后没有反应,只能放弃了。最后用CefSharp测试达到了预期的目的,就是无法打开flash和H264视频。折腾了一天,官方说不支持版权问题,需要自己修改。我找到了一个修改的库,我找到了一个支持flash和H264视频的库:

  提取码:dfdr

  是nupkg的安装包,查看nupkg的安装方法

  那么是时候写代码了:

  获取视频地址,继承并集成默认抽象类DefaultRequestHandler即可。

  public class MyRequestHandler : DefaultRequestHandler

{

public override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)

{

//拿到url后再判断下是不是视频文件

string url = request.Url;

}

}

  然后在初始化浏览器时指定。

  chromeBrowser.RequestHandler = new MyRequestHandler(callback);

  这里我是从url中提取文件名,然后判断扩展名来判断是否是视频文件。不知道有没有更通用的方法。无法判断ResourceType == ResourceType.Media。在很多情况下,返回的值是 xhr。

  FFmpeg部分就是直接命令行调用下,有时间再研究下这个神器的lib方式。

  以下是折腾了几天的结果。

  

  浏览器界面,如果打开网页后截取视频地址,右上角GO后面会显示[X]。 x代表当前页面截取的视频文件数。

  点击左上角的数字或下载标签页,进入如下界面。

  

  

  

  这里可以下载、播放等操作,界面有点丑,功能到了。

  下载支持带断点续传,但m3u8分片文件没有保存断点,所以关闭软件后续传无法恢复,必须重启。直播的大小无法预测,所以不显示进度,但会适时更新下载的数据大小。

  一般情况下不需要下载ts文件,只需要下载m3u8,程序会自动分析ts片段文件,下载完所有文件后自动合成一个mp4文件。

  软件下载:链接:

  提取码:n6q4

  如果还是不行,请下载安装NET Framework4.6.1

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线