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 / mp4 | mp4 适合直接播放,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?av=14661594&p=1&q=64&otype=json返回 JSON 里带上了code、quality、url等字段,说明你的解析接口已经正式开工了。
四、读懂返回结果:json / url / dplayer 三种输出怎么选
otype参数决定了返回内容的形态,这个参数选对了,后面能省很多事。
otype=json:给程序用的标准答案
最通用的形态,返回完整 JSON,适合程序读取。flv 和 mp4 格式的返回结构大致是这样:
{ "code": 0, "quality": 64, "accept_quality": [127, 64, 32, 16], "url": "https://...真实的视频直链..." }而 dash 格式会多出video和audio两个字段——这是 B 站的音画分离设计,视频轨和音频轨各一条链接,追求高画质时用这种格式。
otype=url:给下载器用的纯净直链
只输出一段纯文本的直链地址,不包任何 JSON。适合命令行下载工具,或者你想"只拿链接、自己处理"的场景。
otype=dplayer:给验证效果用的现成播放页
会直接输出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?bv=BV1xx4y1x7zz&p=3&q=32&format=mp4&otype=json如果想在代码里做批量解析,可以循环处理页码,配合缓存做到"每集只请求一次"。
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 有校验,播放器需要伪造来源或者设置
referrerpolicy="never"。项目里的public/dplayer.html就是这么处理的,你可以直接参考它的写法。
七、把工具用对,才能走得更远
技术本身是中性的,解析直链可以帮我们离线学习、搭建自己的资源库,但也意味着更大的责任。几点建议:
- 限于个人学习与研究,不要拿它做商业分发
- 尊重 UP 主和平台的权益,不破解付费内容、不绕过版权限制
- 控制请求频率,不要短时间大量解析,给服务器留点喘息空间
最后给你一条清晰的进阶路线:先跑通index.php的 URL 参数,再读一读src/Bilibili.php里setCid()和bilibili_web_api()这两个方法——它们是整个解析流程的咽喉,看懂了,你基本就掌握了 B 站视频接口的通用套路。之后想加自己的功能,比如批量下载、自动入库、失败重试,都可以在这套结构上直接扩展。
动手试一次吧。找一个你收藏夹里的视频,把 BV 号填进index.php?bv=你的BV号&otype=json,当真实直链出现在屏幕上的那一刻,你会觉得:原来 B站视频解析,真的不难。
【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考