B站视频解析开源方案:bilibili-parse从部署到调用的完整指南
2026/8/14 12:42:19 网站建设 项目流程

B站视频解析开源方案:bilibili-parse从部署到调用的完整指南

【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse

想在自建网站上嵌入一条B站视频,却拿不到真实的播放地址?想做素材采集,却要在十几个在线解析站之间来回试错?bilibili-parse 就是为解决这个问题而生的:一个基于 PHP 的轻量 B站视频解析 API,只需传入 av 号、bv 号或 ep 号,就能在几秒内返回可直接播放的视频地址,并支持 json、url、dplayer 三种输出模式,自己部署、数据可控、无登录依赖。

三步部署:从克隆到拿到第一条解析结果

项目对运行环境的要求极低:PHP 5.4 及以上,且已安装 Curl 与 OpenSSL 扩展,绝大多数虚拟主机都能满足。

第一步,拉取代码:

git clone https://gitcode.com/gh_mirrors/bi/bilibili-parse

第二步,上传到服务器。将整个目录放到任意可运行 PHP 的站点目录下,例如htdocswwwroot,无需修改任何配置。

第三步,发起第一个解析请求。复制任意一个B站视频的 bv 号,替换下面命令中的BV1xxxxx

/index.php?bv=BV1xxxxx&otype=json

浏览器直接访问该地址,几秒内就会返回一个 JSON,其中code为 0 表示成功,url字段就是可直接播放的视频地址。整个部署过程不需要数据库、不需要 composer,五分钟左右就能跑通。

核心能力一:三种"身份证"识别视频,一个接口全兼容

B站视频编号几经变迁,老视频是 av 号,新视频是 bv 号,番剧和课程又用 ep 号。bilibili-parse 在入口层做了统一收编,由 index.php 负责参数校验,由核心类 src/Bilibili.php 完成 API 组装与结果解析。

参数含义示例
av传统视频编号av=14661594
bv现行视频编号bv=BV1xxxxx
ep番剧/课程剧集编号ep=xxxxx
cid分P内容标识(进阶可选)cid=xxxxx

其中 av、bv 用于普通投稿视频,ep 配合type=bangumitype=cheese可解析番剧和付费课程分集。视频有多 P(分集)时,用p参数指定集数,默认取第 1 集。

核心能力二:画质与格式自由组合,避免"会员受限"踩坑

解析出的清晰度和封装格式都由你说了算,四个参数即可完成组合:

参数可选值说明
q16 / 32 / 64 / 80画质档位,数值越高越清晰
formatflv / dash / mp4输出封装格式
typevideo / bangumi / cheese内容类型
p≥1 的整数分集序号,默认 1

调用时把参数拼进 URL 即可,例如:

/index.php?av=14661594&p=2&q=64&format=mp4&otype=json

需要注意的是:当请求的画质超过视频实际可用的最高档位时,核心类会自动向下取最接近的可用档位;若format为 flv 且视频清晰度受限,会返回"视频清晰度受限,可能需要会员"的错误提示,这是正常保护机制,并不是接口故障。

核心能力三:三种输出模式,覆盖"开发—集成—展示"全链路

otype参数切换输出形态,一套接口适配三种使用场景:

  • json(默认):返回完整 JSON 元数据,flv/mp4 格式下包含codequalityaccept_qualityurl四个字段;dash 格式下则返回分离的videoaudio地址,适合开发者二次加工。
  • url:只返回一行纯文本播放地址,适合脚本里直接取用,例如配合 wget、ffmpeg 等工具。
  • dplayer:不返回数据,而是直接输出一个带 DPlayer 播放器的完整 HTML 页面,视频自动加载,适合快速演示或嵌入 iframe。注意该模式仅对 mp4 格式生效,其内部逻辑实现在 public/dplayer.html。
// 直接拿播放地址,无需处理 JSON 结构 /index.php?av=14661594&p=1&q=32&otype=url

实战案例:给自己的网站加一个 B站视频页

以"个人站点嵌入B站视频"为例,完整链路是这样的:

  1. 在页面里用<iframe>引用index.php?bv=...&otype=dplayer
  2. 如果想自定义播放器样式,就改用otype=json拿到url字段,喂给任意支持 flv/mp4 的播放器;
  3. 若视频为多 P,只需拼接&p=2&p=3,即可实现"视频合集"效果,每个 P 独立成页。

批量采集场景同样简单,写个 Shell 循环即可对多个视频逐一取地址:

for vid in "BV1aaaaa" "BV2bbbbb" "BV3ccccc"; do curl "https://你的域名/index.php?bv=$vid&otype=url" >> playurls.txt done

新手 vs 进阶:两条缓存加速路线,按需选择

同一个视频被反复解析会白白消耗 B站 API 配额。项目内置缓存机制,只是入口文件里默认注释掉了,打开 index.php 第 43 行附近取消注释即可启用。这里给出两条路线对比:

路线启用方式适用场景优点注意
文件缓存(新手)$bp->cache(true)->cache_time(3600);任意 PHP 环境零依赖,开箱即用需保证cache/cid/目录可写
APCu 缓存(进阶)$bp->cache(true, 'apcu')->cache_time(3600);高并发站点纯内存读写,性能最优需安装 PHP APCu 扩展

两种方式共用同一套调用链:命中缓存直接返回结果、免去网络请求,缓存默认有效期 3600 秒(最短 60 秒),相同参数下的重复解析基本是瞬时响应,非常适合播放量集中、URL 短时内被反复请求的场景。

常见问题 FAQ

Q:需要登录B站账号或填写 Cookie 吗?A:不需要。项目内置了完整的请求头与 UA,对公开视频直接调用官方 API 即可;付费/会员内容不在支持范围内。

Q:为什么返回"视频清晰度受限,可能需要会员"?A:说明该视频的实际可用画质低于你请求的档位,通常是视频本身需要大会员或存在画质限制。换用q=16或改用format=mp4通常能规避。

Q:dplayer 模式打不开播放器?A:先确认format是否为 mp4,dplayer 输出仅支持 mp4;同时播放器脚本来自 CDN,服务器需能正常访问外网。

Q:解析出的地址可以下载吗?A:可以。url模式输出的就是真实播放地址,可直接交给下载工具或 ffmpeg 保存本地。

Q:请求失败通常是什么原因?A:优先级从高到低排查:视频编号是否有效、服务器能否访问 B站 API(需外网+HTTPS)、是否触发频率限制,最后再确认 PHP 的 Curl/OpenSSL 扩展已启用。

总结与下一步

bilibili-parse 的价值在于把"B站视频解析"这个高频需求收敛成了一个可自托管的 PHP 接口:三种编号全兼容、画质格式可组合、输出模式按需切换、缓存机制一键开启。它适合内容创作者批量取素材,也适合个人站长给站点加视频模块。

现在就去克隆代码,用你手边任意一个 bv 号发起第一次请求,把第一条 JSON 跑通;跑通之后,再试试otype=dplayer和缓存开关,你就能直观感受到这套解析方案的完整工作流了。

【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询