三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

一行链接把B站视频变成可用播放地址:bilibili-parse 解析工具实战手记

一行链接把B站视频变成可用播放地址:bilibili-parse 解析工具实战手记

一行链接把B站视频变成可用播放地址:bilibili-parse 解析工具实战手记

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

你是不是也有过这样的时刻:看中一段 B 站视频,想把它做成剪辑素材,却在页面上怎么都找不到视频源文件;想在课程网站里嵌一节 B 站教程,能做的却只有贴一个跳转外链;想给博客攒一个"本周好视频"栏目,结果每条都要手动折腾半天。

这些事听起来各不相同,内核却是同一个:把 B 站的视频,变成你能直接拿去用的播放地址。而 bilibili-parse,就是为这个需求写的一个轻量 PHP 开源项目。它不要求登录、不需要数据库,把 B 站官方接口包装成几个简单参数,普通视频、番剧、课程全都能处理,普通用户也能轻松上手B站视频获取。

3 分钟跑通第一次B站视频解析

先别急着研究配置,跟着做一遍最小流程,你会立刻明白它有多简单。

环境要求低到几乎可以忽略:PHP 5.4 以上,装上 Curl 和 OpenSSL 扩展即可。

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

把目录扔进任意支持 PHP 的服务器,部署就完成了。接着在浏览器里打开这样一个地址:

/index.php?av=14661594&p=1&q=64&otype=json

一瞬间,页面会返回一段 JSON——视频标题、清晰度、时长、播放地址全在里面。把otype=json换成otype=url,它干脆只回一行纯文本,就是可以直接喂给播放器或下载工具的地址。

从部署到拿到播放地址,全程不超过三分钟。这种"一条链接就出结果"的爽快感,正是它和其他重型抓取方案最不一样的地方。

三个高频场景,把解析能力用在刀刃上

与其罗列参数,不如直接看它怎么帮人解决实际问题。

场景一:给剪辑工作流批量抓素材

做混剪的人最烦的不是剪辑,而是找素材。bilibili-parse 同时支持 av 号、bv 号和番剧 ep 号,老视频新视频都能认,配合p参数还能精确到分 P。写一个十几行的循环脚本,就能把一整季课程或合集按集数批量解析:

for vid in BV1xxx BV2yyy BV3zzz; do curl "https://你的域名/index.php?bv=$vid&otype=url" >> 素材清单.txt done

场景二:把 B 站课程嵌进自己的教学页面

做线上教学的同学会发现,otype=dplayer是个惊喜参数。给它加上视频编号,它会直接吐出一个基于 DPlayer 的完整播放页,前端一行脚本都不用写。项目自带的public/dplayer.html就是现成的播放器演示,改了就能用。

场景三:给博客做视频卡片

如果你只想展示"标题 + 播放"的小卡片,走 JSON 接口最合适。把返回数据里的标题、时长取出来做展示,播放地址塞进播放器,效果比贴外链体面得多。

四个高频疑问,一次讲透

用的时候最常遇到下面几个问题,提前知道能省不少事。

问:为什么我解析的老视频总是糊?

清晰度由q参数控制,常见取值是 16、32、64、80,对应从流畅到高清。要注意,如果原视频本身没有对应清晰度,接口会自动降级到可用的最高档,所以先确认素材源文件就是高码率的。

问:flv、dash、mp4 到底怎么选?

flv 兼容性最好、大多数播放器都认识;dash 是自适应码率,网络波动时体验更好,但通常要把音视频分开取;mp4 最省事,解析完就是单个文件,直接拿来下载最方便。

问:同一个视频反复解析,太慢了怎么办?

项目内置缓存开关,在index.php里取消注释那两行,或用 PHP 集成时这样调用:

$bp = new Injahow\Bilibili('video'); $bp->bvid('BV1xxx')->page(1)->quality(64)->format('mp4'); $bp->cache(true)->cache_time(3600); $data = json_decode($bp->result(), true);

开缓存后,一小时内相同请求直接读缓存返回,重复解析速度能快出不少,也顺带减轻了服务器压力。

问:想批量解析,有没有现成办法?

项目本身是接口型工具,批量这件事交给调用方。上面的 bash 循环,或者任何语言的 HTTP 请求库,都能轻松串起来做视频批量解析。

只读三个文件,心里就有底

整个项目结构非常克制,核心就三处:index.php是入口,负责接收参数、校验类型、分发输出;src/Bilibili.php是真正的核心,封装了 B 站接口调用和结果整理,所有方法支持链式调用,读起来像在写一句完整的话;public/dplayer.html是播放器演示页,做集成测试时可以拿来当样板。

万一某天接口返回异常,src/Bilibili.php里也准备好了完善的错误返回:网络异常、无访问权限、参数无效,都会以明确的codemessage告诉你,而不是抛一堆看不懂的报错。

什么人值得试试它?

如果你是内容创作者,想要一条稳定拿素材的路;如果你是开发者,想给产品快速加上 B 站内容能力;如果你是老师或站长,想把优质视频资源组织进自己的页面——bilibili-parse 都值得花十分钟部署一次。

它不追求大而全,只把"从视频编号到播放地址"这一件事做到简单可靠。下次再遇到"想把 B 站视频弄到自己地盘"的需求,别忘了还有这么个一行链接就能解决的方案。

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

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

← 返回列表