尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

B站视频解析一键搞定:bilibili-parse 上手指南,PHP 轻松获取视频直链

B站视频解析一键搞定:bilibili-parse 上手指南,PHP 轻松获取视频直链 B站视频解析一键搞定bilibili-parse 上手指南PHP 轻松获取视频直链【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse晚上十一点你终于刷到一套讲得透彻的 B 站课程想缓存下来明天通勤路上看——结果翻遍整个页面只有稍后再看没有下载按钮。想把它接到自己的学习系统里同样无从下手。今天这篇文章带你认识一个把「B站视频解析」简化成一行 URL 的 PHP 工具——bilibili-parse。你不用懂复杂的视频加密原理把它部署到服务器上就能把 B 站的视频标识BV 号 / AV 号 / 剧集号翻译成真实可用的播放地址离线收藏、资源整合、二次开发都能做。一、先看清问题为什么 B 站视频不能直接拿走先打个比方。B 站服务器就像一个巨大的智能仓库视频文件整齐地码在货架上。你在网页上看到的 BV 号只是取件码不是包裹本身而仓库为了防盗取件规则还经常变化——要带什么参数、要什么权限、要什么请求头全是一套暗号。没有内部指引的人只能干瞪眼。于是有了 bilibili-parse 这类解析工具它的角色相当于仓库里熟悉每一个货架的内部工作人员你报出取件码它知道该敲哪扇门、报什么口令然后把货在哪、走哪条通道最快原原本本告诉你。它的核心价值就一句话把一个普通人读不懂的暗号翻译成一段可以直接拿来用的视频直链。二、bilibili-parse 能做什么一张功能全景表这是一个用 PHP 编写的轻量解析库核心代码集中在src/Bilibili.php一个类里入口文件index.php本身就是一套现成的 HTTP API。下面这张表基本概括了它的全部能力能力维度支持内容说明视频标识av / bv / ep / cid兼容旧 AV 号、新 BV 号、番剧与课程剧集号视频类型video / bangumi / cheese普通视频、番剧、课堂课程都能解析清晰度16 / 32 / 48 / 64 / 80 / 112 / 127从流畅到 4K自动匹配可用档位输出格式flv / dash / mp4mp4 适合直接播放dash 画质上限高输出方式json / url / dplayer给程序、给下载器、给播放器都行缓存机制文件缓存 / APCu同一个视频重复请求不反复打接口进阶能力cookie / 代理 / access_key应对会员视频和特殊网络环境几个值得单独拎出来的亮点三种视频类型通吃不只能解析普通视频番剧bangumi和付费课程cheese也在支持范围内这是很多同类工具做不到的。开箱即用的 API 形态index.php直接读 URL 参数并返回结果不用写任何业务代码就能当接口用。自带演示播放器项目里附带了 DPlayer 播放页public/dplayer.html拿到直链后能立刻看到播放效果。三、3 步部署让你的解析接口跑起来部署比你想象中简单不需要 composer不需要数据库纯 PHP 文件丢上去就能用。第 1 步拿到项目文件git clone https://gitcode.com/gh_mirrors/bi/bilibili-parse第 2 步确认环境PHP 5.4 及以上版本已启用 Curl 扩展负责发网络请求已启用 OpenSSL 扩展负责 HTTPS 安全连接用php -m命令看一眼扩展列表有curl和openssl就没问题。第 3 步部署并访问把项目文件放到支持 PHP 的服务器目录下然后打开首页。有意思的是不带任何参数访问index.php时它会把项目自带的说明文档页public/readme.html展示给你参数说明一目了然。接着试着拼一个最简单的解析请求index.php?av14661594p1q64otypejson返回 JSON 里带上了code、quality、url等字段说明你的解析接口已经正式开工了。四、读懂返回结果json / url / dplayer 三种输出怎么选otype参数决定了返回内容的形态这个参数选对了后面能省很多事。otypejson给程序用的标准答案最通用的形态返回完整 JSON适合程序读取。flv 和 mp4 格式的返回结构大致是这样{ code: 0, quality: 64, accept_quality: [127, 64, 32, 16], url: https://...真实的视频直链... }而 dash 格式会多出video和audio两个字段——这是 B 站的音画分离设计视频轨和音频轨各一条链接追求高画质时用这种格式。otypeurl给下载器用的纯净直链只输出一段纯文本的直链地址不包任何 JSON。适合命令行下载工具或者你想只拿链接、自己处理的场景。otypedplayer给验证效果用的现成播放页会直接输出public/dplayer.html这个播放器演示页。你在浏览器里访问时如果看到视频正常播放说明整条链路解析 → 直链 → 播放已经全部打通是最直观的验收方式。五、调参技巧清晰度、缓存、分 P 的正确打开方式把工具跑通只是开始想让它在真实场景里又快又稳这几个参数值得认真对待。清晰度不是越高越好q参数控制清晰度源码里按 127、112、80、64、48、32、16 的档位向下匹配——你要求的档位不存在时它会自动降到最近的一个可用档位而不是直接报错这一点很贴心。但要注意两点mp4 格式的画质上限是 80因为网页播放器html5只支持到这个档位。高清档位80 以上经常触发清晰度受限提示需要配合有效的登录 cookie 才能解锁。日常使用建议只做在线播放选 mp4 80要收藏归档选 flv 64画质和兼容性比较平衡。缓存开关一定要打开同一个视频被反复解析既浪费流量也容易触发接口限制。项目内置了缓存能力两种模式可选// 文件缓存无需额外扩展 $bp-cache(true)-cache_time(3600); // APCu 内存缓存需要安装 apcu 扩展 $bp-cache(true, apcu)-cache_time(3600);cache_time最小单位 60 秒默认 3600 秒。注意如果使用文件缓存需要确认cache/cid/目录存在且有写权限。多 P 视频记得带 page一个视频分了好几个 P比如 50 集的课程默认只解析第一集。用p参数指定集数index.php?bvBV1xx4y1x7zzp3q32formatmp4otypejson如果想在代码里做批量解析可以循环处理页码配合缓存做到每集只请求一次。PHP 代码里怎么调用不通过 URL 也行src/Bilibili.php暴露了完整的链式调用接口。一个番剧解析的例子use Injahow\Bilibili; $bp new Bilibili(bangumi); $bp-epid(123456)-quality(64)-format(flv)-page(1); echo $bp-result();六、新手避坑清单5 个常见问题一次说清照着源码和实际使用经验把最容易踩的坑提前告诉你高清视频提示清晰度受限可能需要会员别慌这不是工具坏了。要么是视频本身有会员门槛要么是档位超限。降低q档位或者通过cookie()方法带上你账号的登录 cookie 再试。dash 格式拿到两条链接却放不了dash 是音画分离的video是画面、audio是声音普通播放器没法直接播需要先用工具合并或者干脆换 flv / mp4 格式。解析结果一直命中缓存改了参数不生效缓存文件名和清晰度、格式绑定换参数前先确认cache_time是否已过期调试阶段可以临时关掉缓存。请求很慢甚至超时项目内置了 3 次重试和 20 秒超时但如果你的服务器网络不佳可以检查代理配置proxy()方法或避开高峰期批量解析。直链放在别人的播放器里无法播放大多数直链对 Referer 有校验播放器需要伪造来源或者设置referrerpolicynever。项目里的public/dplayer.html就是这么处理的你可以直接参考它的写法。七、把工具用对才能走得更远技术本身是中性的解析直链可以帮我们离线学习、搭建自己的资源库但也意味着更大的责任。几点建议限于个人学习与研究不要拿它做商业分发尊重 UP 主和平台的权益不破解付费内容、不绕过版权限制控制请求频率不要短时间大量解析给服务器留点喘息空间最后给你一条清晰的进阶路线先跑通index.php的 URL 参数再读一读src/Bilibili.php里setCid()和bilibili_web_api()这两个方法——它们是整个解析流程的咽喉看懂了你基本就掌握了 B 站视频接口的通用套路。之后想加自己的功能比如批量下载、自动入库、失败重试都可以在这套结构上直接扩展。动手试一次吧。找一个你收藏夹里的视频把 BV 号填进index.php?bv你的BV号otypejson当真实直链出现在屏幕上的那一刻你会觉得原来 B站视频解析真的不难。【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表