抓取网页视频( 和入门ffmpeg开FFmpeg官方网站有了神器何不自己写个工具)
优采云 发布时间: 2021-09-15 20:04抓取网页视频(
和入门ffmpeg开FFmpeg官方网站有了神器何不自己写个工具)
几天前,一位同学说他想下载一段网站视频,但找不到连接。他问我有没有办法。当时,我觉得应该很简单,所以我说我会花时间看看。然后我分析了目标网页并试图从网页源代码中找到连接,但失败了。F12调用开发人员工具,进入netwrok,发现网页是XHR请求通过Ajax获得的视频连接。难怪页面元素中没有下载地址。请求的是m3u8格式的文件。在检查这是一个分段流媒体文件,然后到处寻找下载此格式文件的工具后,这不是很理想。很多TS文件在切片后直接下载,但这个网站one是加密的,不能直接播放。最后,找到了视频插件伪影ffmpeg。视频转码、剪辑、合并和播放都不是问题。它还支持多种平台
ffmpeg简介
Ffmpeg开放Ffmpeg官方网站
对于工件,为什么不自己编写一个工具来下载它呢?当您准备开始时,您会被如何获得连接的问题所阻止。最初,您只需要编写一个小型爬虫程序并对web连接进行爬网。结果,它不起作用。Ajax动态地启动了请求。数据不在web页面元素中,我对JS也不熟悉。我不知道如何获得这些数据。学生手动打开浏览器F12然后查找连接是否困难?这不是我的风格:)然后继续搜索,获得结果,自己实现浏览器,并拦截网页上的所有请求。筛选后得到三个方案:
1.WebBrowser.
2.GeokoFx.
3.CefSharp.
首先,我试了一下网络浏览器。目标网站无法直接打开网页。我更改了谷歌浏览器并修改了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。媒体无法评判。在许多情况下,该值返回XHR
FFmpeg部分就是直接命令行调用下,有时间再研究下这个神器的lib方式。
以下是几天的辗转反侧的结果
在浏览器界面中,如果在打开网页后截获视频地址,则会在go后面的右上角显示[x]。X表示在当前页面上截获的视频文件数
点击左上角的数字或下载标签页,进入如下界面
您可以在此下载、播放和其他操作。界面有点难看,功能实现了
下载支持断点继续,但m3u8片段文件不保存断点。因此,软件关闭后无法执行断点继续。重新启动。无法预测实时流的大小,因此不会显示下一个进度,但会及时更新下载的数据大小
通常,TS文件不需要下载,但可以直接从m3u8下载。程序将自动分析TS片段文件,并在下载所有文件后自动合成MP4文件
软件下载:链接:
提取代码:n6q4
如果没有,请下载并安装net framework4.6.1
关于查找教程网络