博客内嵌入Bilibili视频

一、原理

使用 iframe 标签,更改其中 src 对应 bilibili 视频的 aid 和 cid,组装新的 HTML 源码,即可在文章内嵌入 bilibili 视频。

二、获取 aid 和 cid

aid 为视频的 av 号,但是每个 av 号下不一定只有 1p,所以 B 站用 cid 来管理视频的真正 id,那么也可以说如果视频只有 1p,那么 cid 就无用了,我测试直接填 1 也是可以的。

我们在转发视频的时候直接可以看到嵌入代码

这是官方准备的嵌入代码,可以直接拿来用,但是显示效果不是很理想,样式不是我们希望的,需要调整一下。

1
<iframe src="//player.bilibili.com/player.html?aid=80241883&bvid=BV15J411s7SZ&cid=169757174&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>

从嵌入代码中我们直接得到了 aid 和 cid

我们重新设置一下功能、大小、样式,得到可用的 HTML 代码

1
<iframe src="//player.bilibili.com/player.html?aid=80241883&bvid=BV15J411s7SZ&cid=169757174&page=1" scrolling="no" frameborder="no" width="95%" height="600"></iframe></p>

以后插入需要的 bilibili 视频只需要改变上面的 aid 和 cid 就可以了!

三、移动端适配

1
2
3
<div style="position: relative; padding: 30% 45%;">
<iframe style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;" src="https://player.bilibili.com/player.html?cid=169757174&aid=80241883&page=1&as_wide=1&high_quality=1&danmaku=0" frameborder="no" scrolling="no"></iframe>
</div>

可以用这个代码作为样板,以后只需要改变 src 的 id 好就可以了!

四、参数说明

本来这篇博客是我的游戏之作,但没想到捧场的朋友这么多,我看到评论区有朋友讲清晰度的问题,我这里再说一下几个参数。

1
https://player.bilibili.com/player.html?cid=169757174&aid=80241883&page=1&as_wide=1&high_quality=1&danmaku=0
key 说明
aid 视频 ID 就是 B 站的 avxxxx 后面的数字
cid 应该是客户端 id, clientId 的缩写(推测的, 不一定准确) 经过测试, 这个字段不填也没关系
page 第几个视频, 起始下标为 1 (默认值也是为 1) 就是 B 站视频, 选集里的, 第几个视频
as_wide 是否宽屏 1: 宽屏, 0: 小屏
high_quality 是否高清 1: 高清, 0: 最低视频质量(默认) 如视频有 360p 720p 1080p 三种, 默认或者 high_quality=0 是最低 360p high_quality=1 是最高 1080p
danmaku 是否开启弹幕 1: 开启(默认), 0: 关闭

所以只要设置high_quality=1就能开启最高画质了。

B 站官方并没有给出文档说明…..但我发现论坛上有一些相关的讨论

相关链接

经测试 high_quality 参数可以正常使用,此参数控制外链播放器的默认清晰度:
=1 时默认清晰度是最高非大会员清晰度,例如:
(1)原视频清晰度有 360P、480P、720P,外链播放器默认为最高的 720P,
(2)原视频清晰度有 360P、480P、720P、1080P,外链播放器默认为最高的 1080P,
(3)原视频清晰度有 360P、480P、720P、1080P、1080P+,外链播放器默认为 1080P,
选择其他清晰度会打开原视频页面,

=其他数值或没有此参数时默认清晰度是 360P,选择其他清晰度会打开原视频页面。

五、示例

1
2
3
<div style="position: relative; padding: 30% 45%;">
<iframe style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;" src="https://player.bilibili.com/player.html?cid=169757174&aid=80241883&page=1&as_wide=1&high_quality=1&danmaku=0" frameborder="no" scrolling="no"></iframe>
</div>