把 B 站视频放进 HTML:我的第七版 src
前一天晚上十一点零七分,我刚把晚饭的碗洗完,回到桌前打开编辑器,想把一段关于厨房收纳的 B 站视频放进新写的一个页面里。视频是 UP 主「老周不装修」在 2025 年 11 月发的那期,讲日本厨房与浴室的干湿分离,时长 18 分 42 秒,我看了两遍。我想的是,在文章里放一个能直接点开看的播放器,而不是让读者复制一串链接再跳到另一个标签页去。结果这一放,就放到了凌晨十二点四十。
第一版我写得特别敷衍,就是把 B 站给的分享代码整个粘贴进去,<iframe src="//player.bilibili.com/player.html?bvid=BV1mJ411x7hK&page=1">,宽高都没设,直接套了个 width="100%"。刷新之后,播放器确实出现了,但高度只有 150px,视频被压成了一条缝,上下两条黑边厚得像旧报纸的页眉。我当时骂了一句,然后去泡了一杯速溶咖啡——就是那种三合一,很甜。第二版我把高度写死成 500px,视频是正常了,可窗口一缩到手机尺寸,播放器就横着溢出容器,右侧被切掉一块,进度条都点不到。
第三、四、五版我在跟宽高比纠缠。我试过 height: 56.25vw,也试过用 aspect-ratio: 16 / 9 加 width: 100% 的组合。最后第六版我采用了这个写法,这里完整抄一下:外层一个 position: relative; padding-bottom: 56.25%; 的容器,内层 iframe 绝对定位铺满,border: 0,allowfullscreen 一定不能漏,loading="lazy" 顺手加上。改完那一刻,页面在 1440 宽的屏幕上看起来终于像个正经东西了。首屏加载时间从 2.4 秒降到 1.1 秒,我用秒表在手机热点下测的,前后各测了三遍。
<div style="position:relative;padding-bottom:56.25%;height:0;">
<iframe
src="https://player.bilibili.com/player.html?bvid=BV1mJ411x7hK&page=1&autoplay=0"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
allowfullscreen
loading="lazy">
</iframe>
</div>第七版改的是一个很小的东西,也是我想单独说的一件——自动播放。B 站播放器默认有一个 autoplay=1 的位置,很多人复制代码时懒得删,就那样放上去了。我一开始也留着,结果打开页面的一瞬间,声音从音箱里冲出来,我家那台旧音箱音量还停在昨晚看片时的档位,隔壁应该听得一清二楚。我把 autoplay 改成 0 之后,世界安静了。说实话,自动播放这个功能,被严重高估了。它省的是用户一次点击,赔的是用户的一次惊吓,尤其当浏览器还常常直接静音拦掉它、留下一段无声的动画时,那种荒谬感更强。宁可多一个播放按钮,也不要一上来就替别人决定要不要听声音。
顺便讲讲参数。嵌入 B 站播放器的核心是 bvid,就是那个 BV 开头的一串,page 是分 P,多 P 视频默认第一 P。如果视频是旧的 av 号,也可以换成 aid,但我现在基本只用 bvid,短、稳、复制不容易错。还有 high_quality=1、danmaku=0 这类开关,关弹幕那条我建议谨慎——我有一次为了页面干净把弹幕关了,结果一个读者在评论里问我,是不是视频出问题了,怎么那么安静。后来我又加回去了。页面是给人看的,不是给参数表看的,为了「洁癖」牺牲掉使用者的习惯,不太划算。
这中间我还顺手翻了两篇自己以前写的东西,一篇讲 日本厨房与浴室那次内容整理的过程,另一篇是今年看片杂记里提到的黑寡妇俄罗斯空姐,都属于同一个毛病:喜欢为一个细节较劲,然后写得很长。有个朋友跟我说,你写嵌入代码能写四千字,也太絮叨了吧。我承认。可我觉得,一个页面里放一个视频,看着是件小事,实际上牵扯到比例、性能、无障碍、用户习惯,还有你不该替别人做的那些决定。较劲的过程本来就值得写下来,不然下次我又得重来一遍。
说到重来,页面里的标签我也改过。原来那篇杂谈的标题我叫「永久在线看日本大片灬」,是我在一个二手论坛上看到的说法,觉得这名字够直白,就借过来用了,后来想想有点标题党,就一直挂着没动,链接还是永久在线看日本大片灬那个旧地址,懒。你们别学我。真要嵌视频,就三件事:把比例算对,把 allowfullscreen 加上,把自动播放关掉。剩下的,多测两遍手机尺寸就够了。我第七版最终是凌晨十二点四十定稿的,改完关掉编辑器之前,我又打开手机热点测了一遍首屏,1.2 秒,比用 WiFi 慢了 0.1 秒,能接受,然后我就睡了。