Files
bilibili-API-collect/docs/danmaku/danmaku_view_proto.html
T

157 lines
65 KiB
HTML
Raw Normal View History

2026-01-22 17:37:01 +00:00
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.24" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme='dark'] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background-color: var(--vp-c-bg);
}
</style>
<script>
const useChoice = localStorage.getItem('vuepress-color-scheme')
const systemStatus =
'matchMedia' in window
? window.matchMedia('(prefers-color-scheme: dark)').matches
: false
if (useChoice === 'light') {
document.documentElement.dataset.theme = 'light'
} else if (useChoice === 'dark' || systemStatus) {
document.documentElement.dataset.theme = 'dark'
}
</script>
<link rel="icon" href="/bilibili-API-collect/logo2.jpg"><title>弹幕元数据 | BAC Document</title><meta name="description" content="社区开源的第三方哔哩哔哩 API 文档">
<link rel="preload" href="/bilibili-API-collect/assets/style-D1PJH1oj.css" as="style"><link rel="stylesheet" href="/bilibili-API-collect/assets/style-D1PJH1oj.css">
<link rel="modulepreload" href="/bilibili-API-collect/assets/app-Dgsdh8A6.js"><link rel="modulepreload" href="/bilibili-API-collect/assets/danmaku_view_proto.html-DtK2aZTc.js">
<link rel="prefetch" href="/bilibili-API-collect/assets/CONTRIBUTING.html-Dg5RrJ0s.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-CyFjrwOB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-DfGFo93u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/splash.html-DTxmsPVe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ver.html-BK7Hl968.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CRFYL4xy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-67H6b90D.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-CkX_wc45.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/activity_list.html-Bekn3Lxe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DMnsBsuq.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-CBuhzqhd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend_author.html-DBwItBdc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-C0ql065z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/articles.html-zLkcz3pu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/card.html-wL4C5GKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/category.html-Xldy-aPs.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CB0fSHFP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/view.html-COrufaKB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-BeujPZDG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DvFa4PRS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/music_list.html-DeijlME4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/musicstream_url.html-qq6CNfyp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/rank.html-DT2C28KO.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-DEiPXucy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/follow.html-DOVJW4CZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BLypTc8g.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season_index.html-BSNCSXU1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/timeline.html-CzpzQzIG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DlvjAVi_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banlist.html-Bx6m-UTQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BMdR7u31.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_room.html-CJ-aNxn7.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BHbw7wWp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DnLcd0On.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ip.html-BZmNmhHk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-D_ydhzqh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-D36gw51A.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BN64GETH.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/opus.html-CoQ5EdO3.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/railgun.html-2O05GCD4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season.html-B_fCwBA8.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/statistics_data.html-BWH8OqIZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/upload.html-DvDEkxhj.js" as="script"><link rel="prefetch" href="/bilibili-API-
</head>
<body>
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/bilibili-API-collect/"><img class="vp-site-logo" src="/bilibili-API-collect/logo2.jpg" alt="BAC Document"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">BAC Document</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/#🍴目录" aria-label="目录"><!--[--><!--[--><!--]--><!--]-->目录<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/CONTRIBUTING.html" aria-label="贡献指南"><!--[--><!--[--><!--]--><!--]-->贡献指南<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="right arrow"></span></button><ul class="vp-navbar-dropdown" style="display:none;"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&amp;k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&amp;authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&amp;noverify=0&amp;group_code=191187164" aria-label="QQ交流群(综合技术交流)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->QQ交流群(综合技术交流)<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://t.me/bilibili_API_collect_community" aria-label="Telegram交流群(Github Bot推送)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Telegram交流群(Github Bot推送)<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/SocialSisterYi/bilibili-API-collect" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.0
<span class="line"></span>
<span class="line"><span style="color:#6A9955;">//分段弹幕包信息?</span></span>
<span class="line"><span style="color:#569CD6;">message</span><span style="color:#4EC9B0;"> DmSegConfig</span><span style="color:#D4D4D4;"> {</span></span>
<span class="line"><span style="color:#569CD6;"> int64</span><span style="color:#9CDCFE;"> pageSize</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//分段时间?</span></span>
<span class="line"><span style="color:#569CD6;"> int64</span><span style="color:#9CDCFE;"> total</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//最大分页数?</span></span>
<span class="line"><span style="color:#D4D4D4;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;">message</span><span style="color:#4EC9B0;"> DanmakuFlagConfig</span><span style="color:#D4D4D4;"> {</span></span>
<span class="line"><span style="color:#569CD6;"> int32</span><span style="color:#9CDCFE;"> recFlag</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> recText</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> int32</span><span style="color:#9CDCFE;"> recSwitch</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#D4D4D4;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955;">// 互动弹幕条目</span></span>
<span class="line"><span style="color:#569CD6;">message</span><span style="color:#4EC9B0;"> CommandDm</span><span style="color:#D4D4D4;"> {</span></span>
<span class="line"><span style="color:#569CD6;"> int64</span><span style="color:#9CDCFE;"> id</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕dmid</span></span>
<span class="line"><span style="color:#569CD6;"> int64</span><span style="color:#9CDCFE;"> oid</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//视频cid</span></span>
<span class="line"><span style="color:#569CD6;"> int64</span><span style="color:#9CDCFE;"> mid</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//发送者mid</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> command</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕指令</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> content</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕文字</span></span>
<span class="line"><span style="color:#569CD6;"> int32</span><span style="color:#9CDCFE;"> progress</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕出现时间</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> ctime</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> mtime</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> extra</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕负载数据</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> idStr</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕dmid(字串形式)</span></span>
<span class="line"><span style="color:#D4D4D4;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955;">//弹幕个人配置</span></span>
<span class="line"><span style="color:#569CD6;">message</span><span style="color:#4EC9B0;"> DanmuWebPlayerConfig</span><span style="color:#D4D4D4;">{</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> dmSwitch</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕开关</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> aiSwitch</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//智能云屏蔽</span></span>
<span class="line"><span style="color:#569CD6;"> int32</span><span style="color:#9CDCFE;"> aiLevel</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//智能云屏蔽级别</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> blocktop</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//屏蔽类型-顶部</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> blockscroll</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//屏蔽类型-滚动</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> blockbottom</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//屏蔽类型-底部</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> blockcolor</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//屏蔽类型-彩色</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> blockspecial</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//屏蔽类型-特殊</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> preventshade</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//防挡弹幕(底部15%)</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> dmask</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//智能防挡弹幕(人像蒙版)</span></span>
<span class="line"><span style="color:#569CD6;"> float</span><span style="color:#9CDCFE;"> opacity</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">11</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕不透明度</span></span>
<span class="line"><span style="color:#569CD6;"> int32</span><span style="color:#9CDCFE;"> dmarea</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">12</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕显示区域</span></span>
<span class="line"><span style="color:#569CD6;"> float</span><span style="color:#9CDCFE;"> speedplus</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">13</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕速度</span></span>
<span class="line"><span style="color:#569CD6;"> float</span><span style="color:#9CDCFE;"> fontsize</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">14</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//字体大小</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> screensync</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">15</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//跟随屏幕缩放比例</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> speedsync</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">16</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//根据播放倍速调整速度</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> fontfamily</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">17</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//字体类型?</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> bold</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">18</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//粗体?</span></span>
<span class="line"><span style="color:#569CD6;"> int32</span><span style="color:#9CDCFE;"> fontborder</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">19</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//描边类型</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> drawType</span><span style="color:#D4D4D4;">=</span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//渲染类型?</span></span>
<span class="line"><span style="color:#D4D4D4;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#569CD6;">message</span><span style="color:#4EC9B0;"> DmWebViewReply</span><span style="color:#D4D4D4;"> {</span></span>
<span class="line"><span style="color:#569CD6;"> int32</span><span style="color:#9CDCFE;"> state</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕开放状态</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> text</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> textSide</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> DmSegConfig</span><span style="color:#9CDCFE;"> dmSge</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//分段弹幕包信息?</span></span>
<span class="line"><span style="color:#569CD6;"> DanmakuFlagConfig</span><span style="color:#9CDCFE;"> flag</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> repeated</span><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> specialDms</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//BAS(代码)弹幕专包url</span></span>
<span class="line"><span style="color:#569CD6;"> bool</span><span style="color:#9CDCFE;"> checkBox</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">7</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//</span></span>
<span class="line"><span style="color:#569CD6;"> int64</span><span style="color:#9CDCFE;"> count</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">8</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//实际弹幕总数</span></span>
<span class="line"><span style="color:#569CD6;"> repeated</span><span style="color:#569CD6;"> CommandDm</span><span style="color:#9CDCFE;"> commandDms</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">9</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//互动弹幕条目</span></span>
<span class="line"><span style="color:#569CD6;"> DanmuWebPlayerConfig</span><span style="color:#9CDCFE;"> dmSetting</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">; </span><span style="color:#6A9955;">//弹幕个人配置</span></span>
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>示例:</strong></p><p>获取视频<code>av797164471(cid=236871317)</code>的弹幕元数据</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> &#39;https://api.bilibili.com/x/v2/dm/web/view&#39;</span><span style="color:#D7BA7D;"> \</span></span>
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">&#39;type=1&#39;</span><span style="color:#D7BA7D;"> \</span></span>
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">&#39;oid=236871317&#39;</span><span style="color:#D7BA7D;"> \</span></span>
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">&#39;pid=797164471&#39;</span><span style="color:#D7BA7D;"> \</span></span>
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">&#39;SESSDATA=xxx&#39;</span><span style="color:#D7BA7D;"> \</span></span>
<span class="line"><span style="color:#D4D4D4;">-o </span><span style="color:#CE9178;">&#39;danmaku_view.bin&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>响应正文为protubuf二进制数据</p><h2 id="实例" tabindex="-1"><a class="header-anchor" href="#实例"><span>实例</span></a></h2><h3 id="获取互动弹幕" tabindex="-1"><a class="header-anchor" href="#获取互动弹幕"><span>获取互动弹幕</span></a></h3><p>获取并显示视频<code>av797164471(cid=236871317)</code>的所有互动弹幕</p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> web_dmview_pb2</span></span>
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> requests</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">AVID = </span><span style="color:#B5CEA8;">797164471</span></span>
<span class="line"><span style="color:#D4D4D4;">CID = </span><span style="color:#B5CEA8;">236871317</span></span>
<span class="line"><span style="color:#D4D4D4;">url = </span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">&#39;https://api.bilibili.com/x/v2/dm/web/view?type=1&amp;oid=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">CID</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&amp;pid=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">AVID</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">data = requests.get(url)</span></span>
<span class="line"><span style="color:#D4D4D4;">target = web_dmview_pb2.DmWebViewReply()</span></span>
<span class="line"><span style="color:#D4D4D4;">target.ParseFromString(data.content)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">&#39;互动弹幕数=</span><span style="color:#569CD6;">{</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">(target.commandDms)</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&#39;</span><span style="color:#D4D4D4;">)</span></span>
<span class="line"><span style="color:#C586C0;">for</span><span style="color:#D4D4D4;"> i </span><span style="color:#C586C0;">in</span><span style="color:#D4D4D4;"> target.commandDms:</span></span>
<span class="line"><span style="color:#DCDCAA;"> print</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">&#39;&#39;&#39;</span><span style="color:#569CD6;">\</span></span>
<span class="line"><span style="color:#CE9178;">---弹幕ID=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.id</span><span style="color:#569CD6;">}</span></span>
<span class="line"><span style="color:#CE9178;">---视频cid=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.oid</span><span style="color:#569CD6;">}</span></span>
<span class="line"><span style="color:#CE9178;">---发送者mid=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.mid</span><span style="color:#569CD6;">}</span></span>
<span class="line"><span style="color:#CE9178;">---弹幕指令=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.command</span><span style="color:#569CD6;">}</span></span>
<span class="line"><span style="color:#CE9178;">---弹幕文字=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.content</span><span style="color:#569CD6;">}</span></span>
<span class="line"><span style="color:#CE9178;">---弹幕出现时间=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.progress</span><span style="color:#569CD6;">}</span></span>
<span class="line"><span style="color:#CE9178;">---弹幕负载数据=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.extra</span><span style="color:#569CD6;">}</span></span>
<span class="line"><span style="color:#CE9178;">---弹幕ID(字串)=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i.idStr</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&#39;&#39;&#39;</span></span>
<span class="line"><span style="color:#D4D4D4;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>输出为:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>互动弹幕数=1</span></span>
<span class="line"><span>---弹幕ID=38469676112019463</span></span>
<span class="line"><span>---视频cid=236871317</span></span>
<span class="line"><span>---发送者mid=501183549</span></span>
<span class="line"><span>---弹幕指令=#UP#</span></span>
<span class="line"><span>---弹幕文字=这个视频没有恰饭!别紧张!</span></span>
<span class="line"><span>---弹幕出现时间=157818</span></span>
<span class="line"><span>---弹幕负载数据={&quot;icon&quot;:&quot;https://i1.hdslb.com/bfs/face/559abe31f561f71f3106d8ee7b2065cac50c1235.jpg&quot;}</span></span>
<span class="line"><span>---弹幕ID(字串)=38469676112019463</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="获取bas-代码-弹幕专包" tabindex="-1"><a class="header-anchor" href="#获取bas-代码-弹幕专包"><span>获取BAS(代码)弹幕专包</span></a></h3><p>BAS弹幕(<code>pool=2</code> <code>mode=9</code>)只能从此包获取,代码弹幕(<code>pool=2</code> <code>mode=8</code>)也能从此包获取</p><p>获取并显示视频<code>av2(cid=62131)</code>的所有BAS(代码)弹幕专包</p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> web_dmview_pb2</span></span>
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> requests</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">AVID = </span><span style="color:#B5CEA8;">2</span></span>
<span class="line"><span style="color:#D4D4D4;">CID = </span><span style="color:#B5CEA8;">62131</span></span>
<span class="line"><span style="color:#D4D4D4;">url = </span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">&#39;https://api.bilibili.com/x/v2/dm/web/view?type=1&amp;oid=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">CID</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&amp;pid=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">AVID</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">data = requests.get(url)</span></span>
<span class="line"><span style="color:#D4D4D4;">target = web_dmview_pb2.DmWebViewReply()</span></span>
<span class="line"><span style="color:#D4D4D4;">target.ParseFromString(data.content)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">&#39;特殊弹幕包数=</span><span style="color:#569CD6;">{</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">(target.specialDms)</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&#39;</span><span style="color:#D4D4D4;">)</span></span>
<span class="line"><span style="color:#C586C0;">for</span><span style="color:#D4D4D4;"> i </span><span style="color:#C586C0;">in</span><span style="color:#D4D4D4;"> target.specialDms:</span></span>
<span class="line"><span style="color:#DCDCAA;"> print</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">&#39;特殊弹幕包url=</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">i</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">&#39;</span><span style="color:#D4D4D4;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>输出为:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>特殊弹幕包数=1</span></span>
<span class="line"><span>特殊弹幕包url=https://i0.hdslb.com/bfs/dm/b0d5f08c12be59292aa0d4e09b6dd8e54c2ba886.bin</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>使用<a class="route-link" href="/bilibili-API-collect/docs/danmaku/danmaku_proto.html#%E8%8E%B7%E5%8F%96%E5%AE%9E%E6%97%B6%E5%BC%B9%E5%B9%95">普通分段包弹幕</a>的proto结构体反序列化此bin数据</p></div><!--[--><!--]--></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link label" href="https://github.com/SocialSisterYi/bilibili-API-collect/edit/master/docs/danmaku/danmaku_view_proto.md" aria-label="在 GitHub 上编辑此页" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><svg class="edit-icon" viewbox="0 0 1024 1024"><g fill="currentColor"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></g></svg><!--]--><!--]-->在 GitHub 上编辑此页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">最近更新: </span><time class="meta-item-info" datetime="2024-07-06T16:45:20.000Z" data-allow-mismatch>2024/7/6 16:45</time></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: 1440239038@qq.com">SocialSisterYi</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 65224318+wuziqian211@users.noreply.github.com">wuziqian211</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><footer style="text-align:center;"> Copyright © 2020-2025 <a href="https://github.com/SocialSisterYi/">SocialSisterYi</a> | <a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE">CC-BY-NC-4.0 Licensed</a></footer><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/bilibili-API-collect/assets/app-Dgsdh8A6.js" defer></script>
</body>
</html>