资讯详情

资讯详情

一条MPD地址到完整视频:cat-catch的DASH解析下载实操指南

一条MPD地址到完整视频cat-catch的DASH解析下载实操指南【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catchcat-catch猫抓是一个浏览器资源嗅探扩展能把DASH/MPD流解析成可直接下载的MP4。打开一个播放DASH视频的页面点一下工具栏的猫图标弹窗里列出当前页的资源选中一条MPD地址质量列表、分段列表和下载按钮就都摆好了。 手动提取MPD vs 用cat-catch一键解析没有扩展时流程是打开开发者工具在Network面板里筛出.mpd请求把地址复制出来再下载这份XML对着SegmentTemplate里的$Number$占位符手算分段URL最后还得自己写脚本循环下载几十上百个切片。用cat-catch时嗅探列表里出现MPD资源点它的解析按钮新标签页里选一下质量点转为M3U8下载页自动打开剩下的是点合并下载。⚙️ MPD解析走读从XHR嗅探到切片下载跟着一条请求的旅程走一遍。嗅探内容脚本扫描XHR响应内容脚本catch-script/search.js挂到每个页面的XHR和fetch上响应文本会被扫描媒体特征。命中MPD的规则有两条URL以.mpd结尾或响应里带urn:mpeg:dash:schema:mpd声明。if (ext mpd) { let url URL.createObjectURL(new Blob([new TextEncoder(utf-8).encode(text)])); postData({ action: catCatchAddMedia, url: url, href: location.href, ext: ext }); return; }作用MPD文本未必有可公开访问的地址所以把整份内容打成本地blob地址交给后台保证来源在哪都能解析。MPD相当于一份目录它列出每个TS分段的地址和时长本身不含视频内容。解析XML变成质量下拉框点开弹窗里的MPD资源会打开mpd.html?url…js/mpd.js先fetch到MPD文本再交给lib/mpd-parser.min.js来自videojs/mpd-parser的mpdParser.parse转成结构化JSON视频轨放进playlists每条带码率、帧率、分辨率音轨按语言组放进mediaGroups.AUDIO。解析页把这两个下拉框渲染出来。渲染前还有一步DRM检查isDRM扫MPD里的ContentProtection节点按schemeIdUri匹配出Widevine、PlayReady、FairPlay命中就在页面上直接展示pssh并提示这是加密流。下载M3U8接棒M3U8是cat-catch下载流水线的通用语言——线程、密钥解密、mp4重封装全都建在它上面。点转为M3U8时选中质量的分段被拼成一份标准播放列表m3u8Content #EXT-X-MAP:URI items.segments[0].map.resolvedUri \n; for (let key in items.segments) { m3u8Content #EXTINF: items.segments[key].duration ,\n m3u8Content items.segments[key].resolvedUri \n; } m3u8Content #EXT-X-ENDLIST;作用先写初始化分段MAP再逐条列出每个分段的时长和地址把DASH目录变成m3u8解析器能读的播放列表。随后打开m3u8.html?getMpdId当前标签IDjs/m3u8.js识别到这个参数if (_getMpdId) { chrome.tabs.sendMessage(_getMpdId, getM3u8, function (result) { $(#m3u8Text).val(result.m3u8Content); $(#parse).click(); $(#info).html(result.mediaInfo); }); }作用向MPD解析标签发消息取回播放列表填进输入框并自动触发解析完成MPD到M3U8的交接。之后hls.js载入源页面显示分段列表、总时长和估算大小默认32线程合并下载把切片拼成一个MP4。 一个场景从头走到尾下载一条10分钟的DASH流打开嗅探列表打开视频页面让视频播放一次以触发资源加载。点工具栏猫图标弹窗列表里勾着4条MP4从14.1MB到125.2MB下方详情区显示标题、MIME、时长00:28、分辨率1280x720、直连URL还有一段可播放的预览。选质量并转为M3U8点资源行上的解析按钮MPD资源打开MPD解析页视频下拉框里每条质量都标着名称、码率kbps、帧率和分辨率音频下拉框按语言列出各条音轨。点一下提取切片文本框里逐行列出分段地址并标注共64个文件总时长10:34。点转为M3U8m3u8解析器页自动打开64个TS地址、总时长10:34、分辨率1280x720一目了然。勾选mp4格式、下载线程保持32点合并下载进度条走完得到一个MP4文件。其他适用场景各一句带DRM的流解析到一半就停页面只展示pssh不做解密多音轨流在音频下拉框里逐条列出可选只要分段地址不下载提取切片按钮直接给你。界面随系统有西班牙语等10种语言版本m3u8解析器布局完全一致 进阶配置与踩坑记录可能用到的两个配置MPD地址要带RefererMPD解析页有一个Referer输入框手填地址解析时它会被打包进请求头js/mpd.js里拼成requestHeaders参数。不少站点会拒绝无来源的请求。下载范围下载页有两个下载范围输入框默认1-64即全量。只要前2分钟就填1-12分片数对着列表数就行。三个常见坑加密流别浪费时间解析时检测到Widevine/PlayReady/FairPlay页面展示pssh并告警cat-catch不做DRM解密这类资源直接放弃。线程与重封装下载线程默认32弱网服务器调小勾选mp4格式后切片会重封装为MP4而不是TS直接拼接。内核版本1.0.17之后要求Chromium内核93以上完整功能需要104以上见README兼容性说明Firefox可用但部分功能被隐藏。 收尾cat-catch的MPD解析本质是一次接力内容脚本抓住MPDmpd-parser把它变成JSON再拼成M3U8复用整套m3u8下载流水线。 下一步打开任意一个DASH演示页面点弹窗里的MPD资源点转为M3U8走完上面这条流程。【免费下载链接】cat-catch猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →