播放器

web 播放器信息

web 播放器的信息接口,提供正常播放需要的元数据,包括:智能防挡弹幕、字幕、章节看点等。

https://api.bilibili.com/x/player/wbi/v2

请求方式:GET

url 参数:

参数名类型内容必要性备注
aidnum稿件 avid必要 (可选)aid 与 bvid 任选
bvidstr稿件 bvid必要 (可选)aid 与 bvid 任选
cidnum稿件 cid必要
w_ridstrWBI 签名不必要
wtsnum当前 unix 时间戳不必要

json 回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-400:请求错误
messagestr错误信息默认为 0
ttlnum1
dataobj数据本体

data 对象:

字段类型内容备注
aidnum视频 aid
bvidstr视频 bvid
cidnum视频 cid
dm_maskobjwebmask 信息(如果没有这一项,说明这个视频没有防挡功能)
subtitleobj字幕信息(需要登录,不登录此项内容为 []
view_pointsarray章节看点信息
其他...主要是观看记录、使用者等级权限、背景音乐等信息

dm_mask对象(如果有):

字段类型内容备注
cidnum视频 cid
platnum未知
fpsnumwebmask 取样 fps
timenum未知
mask_urlstrwebmask 资源 url

解析 webmask 请看 智能防挡弹幕

subtitle对象:

字段类型内容备注
allow_submitbooltrue
lanstr""
lan_docstr""
subtitlesarray不登录为 []

subtitles 数组内的元素:

字段类型内容备注
ai_statusnum
ai_typenum
idnum
id_strstr和 id 不一样
is_lockbool
lanstr语言类型英文字母缩写
lan_docstr语言类型中文名称
subtitle_urlstr资源 url 地址
typenum0

view_point 数组内的元素:

字段类型内容备注
contentnum章节名
fromnum
tonum
typenum
imgUrlstr图片资源地址
logoUrlstr""

示例:

curl -G "https://api.bilibili.com/x/player/wbi/v2?aid=515345690&cid=825851971"
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "aid": 515345690,
        "bvid": "BV1Fg411D7Jy",
        ... // 省略
        "dm_mask": {
            "cid": 825851971,
            "plat": 0,
            "fps": 30,
            "time": 0,
            "mask_url": "//upos-sz-staticcos-cmask.bilivideo.com/cmaskboss/825851971_30_0.webmask?trid=219266863a1442baa05086b4285ba923B&orderid=0,1&logo=00000000"
        },
        "view_points": [
            {
                "type": 2,
                "from": 0,
                "to": 27,
                "content": "狗啃的",
                "imgUrl": "http://i0.hdslb.com/bfs/vchapter/825851971_0.jpg",
                "logoUrl": ""
            },
            {
                "type": 2,
                "from": 27,
                "to": 63,
                "content": "椒牌泡菜",
                "imgUrl": "http://i0.hdslb.com/bfs/vchapter/825851971_27.jpg",
                "logoUrl": ""
            }, ... // 省略
        ],
        "subtitle": {
            "allow_submit": true,
            "lan": "",
            "lan_doc": "",
            "subtitles": [], // 未登录,下面是登录的版本
            "subtitles":[
                {
                    "id": 1042985852759993300,
                    "lan": "ai-zh",
                    "lan_doc": "中文(自动生成)",
                    "is_lock": false,
                    "subtitle_url": "//aisubtitle.hdslb.com/bfs/ai_subtitle/prod/5153456908258519712094280c7c2884b77929bab82f64530f?auth_key=1714795727-a8eb254b60bc4a73bc8662da51005340-0-1c305894e48e959979b163636461fb8f",
                    "type": 1,
                    "id_str": "1042985852759993344",
                    "ai_type": 0,
                    "ai_status": 2
                }
            ]
        }
    }
}

播放反馈

https://app.bilibili.com/x/resource/laser2

请求方式: POST

注: 该接口不传 Cookie

URL参数:

参数名类型内容必要性备注
midnum当前用户 mid不必要未登录为空
buvidstrBUVID (APP) 或 buvid3 (Web)必要可为任意非空字符串
app_keystrAPP 密钥必要Web: web_player
可为任意非空字符串
urlstr日志 URL非必要上传接口 得到的 upos 协议 URL
task_typenum任务类型非必要300: 播放卡顿
301: 进度条君无法调戏
354: 校园网无法访问
303: 弹幕无法显示
553: 跳过首尾时间有误
304: 出现浮窗广告
305: 无限小电视
302: 音画不同步
306: 黑屏
307: 其他

JSON回复:

字段类型内容备注
codenum返回值0: 成功
-400: 请求错误
messagestr错误信息默认为 0
ttlnum1
dataobj数据本体

data 对象:

字段类型内容备注
task_idnum任务 ID?

示例:

播放反馈无限小电视, 不登录, 不传文件, buvid 为 chenrui-in-icu

curl -X POST "https://app.bilibili.com/x/resource/laser2" \
--data-urlencode "buvid=chenrui-in-icu" \
--data-urlencode "app_key=web_player" \
--data-urlencode "task_type=305"
查看响应示例:
{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data": {
    "task_id": 850448532
  }
}