
bilibili-parse 快速上手指南如何用一套 PHP 接口免费解析 B站视频播放地址【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse需要从 B站拿视频直链却总是绕弯路bilibili-parse 就是为此而生的开源 PHP 视频解析 API只需传入 av 号、bv 号或番剧 ep 号就能在几秒内换回真实可用的播放地址。它还支持画质选择、flv/dash/mp4 多格式输出、JSON 直出以及内置缓存部署门槛极低。这篇文章会从零带你跑通它并讲透每一个参数和常见的坑。先回答一个问题为什么你拿不到 B站视频的真实地址在浏览器里打开一个 B站视频地址栏那一串www.bilibili.com/video/BV...只是页面地址并不是视频文件本身。真正的视频流藏在页面背后的播放接口里普通用户想要把它抓出来通常会遇到几道坎右键另存为B站早就关闭了原生下载入口用在线下载站要么收费、要么解析失败、要么夹杂一堆广告手动翻接口需要处理签名、请求头、清晰度参数还要面对随时变动的规则。如果你同时还在折腾批量抓取系列视频、把内容嵌入自己的网站或者想把多个 B站视频聚合到自己的系统里手动复制粘贴根本不可行。这时候你需要的是一个稳定的解析接口而 bilibili-parse 恰好把这件事封装成了一段可以直接调用的 PHP 代码。bilibili-parse 是什么一段话讲清它的定位这个项目本质上是一个B站播放地址查询中间层你告诉它视频编号和想要的画质它去请求 B站官方接口再把你真正需要的那段视频地址返回给你。整个调用过程不需要登录账号不需要数据库不需要配置复杂的密钥体系。它一次能替你处理四件事编号自适应av 号、bv 号、ep 号都能认不用自己换算多内容类型普通投稿video、番剧影视bangumi、付费课程cheese三种场景走不同的官方接口自动切换多格式多画质flv / dash / mp4 任选画质从 360P 到 1080P 自动匹配B站只给什么它就返回什么多输出形式可以吐 JSON 数据、可以只回一个纯文本 URL也可以直接生成一个 DPlayer 播放页面。整个仓库只有三个核心文件入口脚本index.php、核心类src/Bilibili.php、播放器演示页public/dplayer.html代码量很小想改逻辑时翻起来也不吃力。运行它需要什么条件要求非常低满足三条即可PHP 5.4 及以上版本已启用 Curl 扩展负责发网络请求已启用 OpenSSL 扩展保证 HTTPS 请求正常。不需要安装 Composer不需要数据库也不需要配 Nginx 的伪静态规则是标准的放上去就能用型项目。部署只要两步把接口在本地或服务器上跑起来第一步获取代码。在服务器或本机任意目录执行git clone https://gitcode.com/gh_mirrors/bi/bilibili-parse第二步放入站点目录。把克隆下来的整个目录放到 PHP 站点根目录比如htdocs或www确保index.php能被 Web 服务器直接访问到即可。第三步验证。浏览器打开http://你的域名/index.php?bv某个有效bv号otypejson能看到一段 JSON说明解析链路已经通了。注意不带任何参数访问index.php时它会把项目的说明页public/readme.html展示出来这属于正常行为不是报错。核心参数逐一说透一张速查表加四组说明先把所有可用的请求参数列成一张速查表参数名作用默认值可选值av老式视频编号数字—任意有效 av 号bv现行视频编号字母数字混合—任意有效 bv 号ep番剧 / 课程的剧集编号—任意有效 ep 号cid分P的视频内容编号进阶—与视频对应的 cidp选择第几P1≥1 的整数q目标清晰度3216 / 32 / 64 / 80 等type内容类型videovideo / bangumi / cheeseformat视频格式flvflv / dash / mp4otype返回形式jsonjson / url / dplayer第一组三个编号怎么选av 号是最早的纯数字编号适合老视频或已知 av 号的场景bv 号是现在的通用编号index.php支持直接传入ep 号专门用于番剧和课程因为这类内容按集组织没有独立的 bv 号。如果同时传了 av 和 bv内部优先按 bv 处理三者的作用都是先解析出视频的 cid拿到 cid 才能进一步获取播放地址所以 cid 也可以被直接指定属于进阶用法通常不需要手动传。第二组清晰度 q 到底填多少q是目标画质B站不一定满足你的全部请求接口会先按编号解析再对照视频实际可用的清晰度列表自动向下取最近的一档。常用的几档对应关系如下q 值画质档位适合的场景16360P 流畅弱网环境、移动端32480P 标清默认值流量与观感较均衡64720P 高清日常观看的推荐档801080P 超清对画质有要求的场景112 及以上2K / 4K 等更高档通常需要登录或大会员一个需要提前知道的现实如果目标画质需要会员权限接口会明确返回清晰度受限的提示而不是静默降级。另外当formatmp4时接口内部会把请求画质固定在高清档这是 B站 HTML5 播放通道的限制不算 bug。第三组三种视频格式的差异flv默认格式B站最常见输出绝大多数播放器和下载工具都能识别mp4走 HTML5 通道拿到的封装格式通用性最强网页里直接就能播dash返回音视频分离的两个地址video与audio字段各一条适合要自己做自适应码率或分别处理音轨的高级玩家。第四组内容类型 type 别忽略很多人只用默认的video但如果你要解析番剧或课程必须把type切到对应值否则内部会走错接口返回一堆报错。三种取值对应三种官方接口普通投稿、番剧点播、课程点播各管各的。三种输出模式怎么选一次看明白otype决定了接口返回什么这是接入方最容易混淆的地方。模式一otypejson默认最常用返回结构化数据适合程序消费。典型请求index.php?bvBV1xxxxxq64otypejson模式二otypeurl最省事只返回一段纯文本的播放地址适合在脚本里直接抓取使用。注意它要求format是 flv 或 mp4 这类单地址格式index.php?av14661594p2otypeurl模式三otypedplayer开箱即用此时接口不解析地址而是直接把public/dplayer.html这个播放器页面返回给你。页面自带 DPlayer会自动用 mp4 格式去请求并渲染播放器想快速预览效果时最方便index.php?av14661594otypedplayer把它写进自己的代码核心类的调用姿势虽然直接请求index.php已经够用但更常见的做法是在你自己的 PHP 工程里引入核心类这样可以在同一进程内反复调用、自由组合参数。核心类的调用方式支持链式写法include src/Bilibili.php; use Injahow\Bilibili; $bp new Bilibili(video); // video / bangumi / cheese $bp-bvid(BV1xx411c7mD) -page(1) // 第几P -quality(64) // 目标画质 -format(mp4); // flv / dash / mp4 $result json_decode($bp-result(), true); if ($result[code] 0) { echo $result[url]; // 直接拿到播放地址 }result()是总入口它会自动完成解析 cid → 请求播放接口 → 校验结果 → 返回数据全流程只要code为 0 就代表解析成功。如果缓存开启它还会先查缓存、命中就直接返回。返回值长什么样flv / mp4 格式的典型返回{ code: 0, quality: 64, accept_quality: [64, 32, 16], url: https://...真实播放地址 }dash 格式的返回略有不同会多出video和audio两个字段分别指向画面流和声音流。给接口提速缓存配置怎么开同一个视频反复被请求每次都去敲 B站接口既不划算也不礼貌。核心类内置了缓存机制支持两种后端// 文件缓存把结果写入 cache/cid 目录默认缓存 1 小时 $bp-cache(true)-cache_time(3600); // APCu 缓存内存级更快需要服务器装了 apcu 扩展 $bp-cache(true, apcu)-cache_time(3600);几个细节值得注意缓存文件按视频 cid 清晰度 格式组合命名不同画质的请求会各自缓存互不干扰缓存有效期下限是 60 秒即使你传了 10 秒也不会生效使用文件缓存时需要确保cache/cid目录有写入权限否则缓存会静默失败对频繁变动的视频比如正在直播回放、刚更新的剧集可以把缓存时间调短一些。这些场景里它能真正派上用场内容创作者收集素材时写个循环脚本把一串 bv 号挨个请求 JSON提取出指定画质的地址再配合下载工具就能批量入库比手动一个个存方便得多。教育平台做资源整合时把 B站上的公开课程地址解析后嵌入自己的学习页面学生不用跳转就能观看同时保留来源链接。个人网站或博客做媒体增强时用otypedplayer生成播放器页或者在自己前端用 DPlayer 配合解析接口几行代码就能把 B站视频搬进自己的页面。企业内部做内容归档时接口返回的 JSON 里带有quality和accept_quality可以作为内容质量的判断依据方便归档时打标签。常见报错排查清单遇到问题先对照这张表返回内容含义处理建议code: 1unknown cid没解析出视频内容编号检查编号是否打错、视频是否已失效code: 1无访问权限内容属于预览或受限状态该视频无法公开解析换一个源code: 1获取信息失败播放接口没返回可用数据试试切换 format或确认该视频类型与 type 是否匹配code: 1视频清晰度受限目标画质需要登录或大会员降低 q 值或接受较低画质访问 index.php 显示说明页没传 av / bv / ep 参数这是设计好的引导页补上参数即可请求超时或空结果服务器到 B站网络不稳检查服务器出口网络必要时走代理另外提醒一句q值传得过高不会报错内部会自动向下收敛到 B站实际允许的画质但如果你需要精确控制返回质量建议把q和返回 JSON 中的accept_quality对照着看。写在最后它擅长什么又有什么边界bilibili-parse 的价值在于把 B站复杂的播放接口封装成一行参数让解析这件事从玄学变成可复用的工程能力。它免费、开源、部署简单适合内容创作者、PHP 开发者、教育从业者和个人站长快速落地。同时也要说清它的边界它只解析 B站公开可访问的内容付费视频和会员专属画质无能为力它返回的是播放地址本身不提供下载能力下载需要再配合下载工具接口调用也有频率限制别在短时间内暴力请求。如果你正好需要一套不折腾的 B站视频解析方案照着这篇文章的步骤部署一次再拿自己的视频编号试几个参数组合很快就能摸清它的脾气。动手跑一遍比读十遍文档都管用。【免费下载链接】bilibili-parsebilibili Video API项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考