bilibili-API-collect/video/snapshot.md
2023-01-17 15:23:59 +08:00

14 KiB
Raw Blame History

视频快照

快照的截取时间根据视频画面变化程度决定,各视频不相同

截取时间表的时间根据视频画面变化程度决定,各每个视频不相同

截取时间表的时间和快照一一对应,并按照从左到右 从上到下的顺序排布



获取视频快照web端

https://api.bilibili.com/x/player/videoshot

请求方式GET

url参数

参数名 类型 内容 必要性 备注
aid num 稿件avid 必要(可选) avid与bvid任选一个
bvid str 稿件bvid 必要(可选) avid与bvid任选一个
cid num 分P cid 非必要 默认为1P
index num json数组截取时间表 非必要 1需要
0不需要
默认为0

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
40001请求错误
40003无视频
message str 错误信息 默认为0
ttl num 1
data obj 信息本体

data对象:

字段 类型 内容 备注
pvdata str bin格式截取时间表url
img_x_len num 每行图片数 一般为10
img_y_len num 每列图片数 一般为10
img_x_size num 每张图片长 一般为160
img_y_size num 每张图片宽 一般为90
image array 图片拼版
index array json数组格式截取时间表 无为空

data中的image数组:

类型 内容 备注
0 str 图片拼版1 url
n str 图片拼版(n+1) url 第一张拼版占满时延续第二张
…… str …… ……

data中的index数组:

类型 内容 备注
0 num 恒为0
1 num 图片1 截取时间 视频0秒截取时间
n num 图片n 截取时间 单位为秒
…… num …… 单位为秒

示例:

获取视频av26273789/BV1os411H7wm的快照

avid方式

curl -G 'https://api.bilibili.com/x/player/videoshot' \
--data-urlencode 'aid=26273789' \
--data-urlencode 'index=1'

bvid方式

curl -G 'https://api.bilibili.com/x/player/videoshot' \
--data-urlencode 'bvid=BV1os411H7wm' \
--data-urlencode 'index=1'
查看响应示例:
{
	"code": 0,
	"message": "0",
	"ttl": 1,
	"data": {
		"pvdata": "//i0.hdslb.com/bfs/videoshot/49075258.bin",
		"img_x_len": 10,
		"img_y_len": 10,
		"img_x_size": 160,
		"img_y_size": 90,
		"image": ["//i0.hdslb.com/bfs/videoshot/49075258.jpg", "//i0.hdslb.com/bfs/videoshot/49075258-1.jpg"],
		"index": [0, 0, 8, 14, 19, 25, 34, 40, 46, 56, 63, 70, 80, 87, 93, 100, 109, 117, 124, 133, 142, 148, 156, 164, 171, 179, 184, 192, 198, 206, 214, 223, 232, 239, 246, 254, 261, 269, 275, 283, 289, 299, 305, 310, 315, 322, 330, 339, 348, 358, 364, 371, 376, 382, 391, 404, 413, 421, 426, 434, 441, 452, 458, 463, 473, 479, 491, 497, 504, 514, 521, 528, 533, 540, 546, 552, 558, 567, 575, 586, 591, 602, 609, 615, 623, 629, 639, 647, 653, 658, 664, 670, 675, 684, 691, 698, 713, 724, 729, 737, 743, 754, 762, 772, 779, 784, 797, 803, 810, 817, 825, 834, 845, 851, 857, 867, 878, 888, 896, 903, 909, 914, 919, 928, 935, 944, 958, 970, 977, 988, 996, 1004, 1011, 1018, 1026, 1035, 1041, 1048, 1055, 1063, 1073, 1079, 1086, 1095, 1106, 1111, 1124, 1135, 1147, 1153, 1159, 1165, 1171, 1184, 1198, 1209, 1215, 1221, 1228, 1236, 1242, 1253, 1258, 1269, 1276, 1284, 1289, 1300, 1306, 1315, 1321, 1328, 1340, 1347, 1354, 1361, 1366, 1371, 1383, 1390, 1396, 1403, 1415]
	}
}

获取视频快照APP端

https://app.bilibili.com/x/v2/view/video/shot

请求方式GET

鉴权方式appkey

url参数

参数名 类型 内容 必要性 备注
aid num 稿件avid 必要
appkey str APP密钥 APP方式必要
cid num 分P cid 必要
ts num 当前时间戳 APP方式必要
sign str APP签名 APP方式必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
-400请求错误
10008稿件的缩略图不存在
message str 错误信息 默认为0
ttl num 1
data obj 信息本体

data对象:

字段 类型 内容 备注
pvdata str bin格式截取时间表url
img_x_len num 每行图片数 一般为10
img_y_len num 每列图片数 一般为10
img_x_size num 每张图片长 一般为160
img_y_size num 每张图片宽 一般为90
image array 图片拼版

data中的image数组:

类型 内容 备注
0 str 图片拼版1 url
n str 图片拼版(n+1) url 第一张拼版占满时延续第二张
…… str …… ……

示例:

获取视频av26273789cid=49075258)的快照

curl -G 'https://app.bilibili.com/x/v2/view/video/shot' \
--data-urlencode 'appkey=1d8b6e7d45233436' \
--data-urlencode 'aid=26273789' \
--data-urlencode 'cid=49075258' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=06c0a4f2ede21984313552bd9439db18'
查看响应示例:
{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "pvdata": "https://i0.hdslb.com/bfs/videoshot/49075258.bin",
        "img_x_len": 10,
        "img_y_len": 10,
        "img_x_size": 160,
        "img_y_size": 90,
        "image": [
            "https://i0.hdslb.com/bfs/videoshot/49075258.jpg",
            "https://i0.hdslb.com/bfs/videoshot/49075258-1.jpg"
        ]
    }
}

获取视频快照web端用于封面预览

https://api.bilibili.com/pvideo

请求方式GET

内容与「获取视频快照1」加参数index=1相同但url带有转义仅限第1P

url参数

参数名 类型 内容 必要性 备注
aid num 稿件avid 必要

json回复

根对象:

字段 类型 内容 备注
code num 返回值 0成功
40001请求错误
-404无视频
message str 错误信息 默认为0
ttl num 1
data obj 信息本体

data对象:

字段 类型 内容 备注
pvdata str bin格式截取时间表url
img_x_len num 每行图片数 一般为10
img_y_len num 每列图片数 一般为10
img_x_size num 每张图片长 一般为160
img_y_size num 每张图片宽 一般为90
image array 图片拼版
index array json数组格式截取时间表 无为空

data中的image数组:

类型 内容 备注
0 str 图片拼版1 url
n str 图片拼版(n+1) url 第一张拼版占满时延续第二张
…… str …… ……

data中的index数组:

类型 内容 备注
0 num 恒为0
1 num 图片1 截取时间 视频0秒截取时间
n num 图片n 截取时间 单位为秒
…… num …… 单位为秒

示例:

获取视频av26273789的快照

curl -G 'https://api.bilibili.com/pvideo' \
--data-urlencode 'aid=26273789'
查看响应示例:
{
	"code": 0,
	"message": "0",
	"ttl": 1,
	"data": {
		"pvdata": "\/\/i0.hdslb.com\/bfs\/videoshot\/49075258.bin",
		"img_x_len": 10,
		"img_y_len": 10,
		"img_x_size": 160,
		"img_y_size": 90,
		"image": ["\/\/i0.hdslb.com\/bfs\/videoshot\/49075258.jpg", "\/\/i0.hdslb.com\/bfs\/videoshot\/49075258-1.jpg"],
		"index": [0, 0, 8, 14, 19, 25, 34, 40, 46, 56, 63, 70, 80, 87, 93, 100, 109, 117, 124, 133, 142, 148, 156, 164, 171, 179, 184, 192, 198, 206, 214, 223, 232, 239, 246, 254, 261, 269, 275, 283, 289, 299, 305, 310, 315, 322, 330, 339, 348, 358, 364, 371, 376, 382, 391, 404, 413, 421, 426, 434, 441, 452, 458, 463, 473, 479, 491, 497, 504, 514, 521, 528, 533, 540, 546, 552, 558, 567, 575, 586, 591, 602, 609, 615, 623, 629, 639, 647, 653, 658, 664, 670, 675, 684, 691, 698, 713, 724, 729, 737, 743, 754, 762, 772, 779, 784, 797, 803, 810, 817, 825, 834, 845, 851, 857, 867, 878, 888, 896, 903, 909, 914, 919, 928, 935, 944, 958, 970, 977, 988, 996, 1004, 1011, 1018, 1026, 1035, 1041, 1048, 1055, 1063, 1073, 1079, 1086, 1095, 1106, 1111, 1124, 1135, 1147, 1153, 1159, 1165, 1171, 1184, 1198, 1209, 1215, 1221, 1228, 1236, 1242, 1253, 1258, 1269, 1276, 1284, 1289, 1300, 1306, 1315, 1321, 1328, 1340, 1347, 1354, 1361, 1366, 1371, 1383, 1390, 1396, 1403, 1415]
	}
}

图片拼版

以160x90像素为一张横向10张纵向10张从左到右从上到下进行裁剪

图1为0s图2为8s图3为14s以此类推……

示例拼版图片urlhttp://i0.hdslb.com/bfs/videoshot/49075258.jpg

bin格式截取时间表

bin的内容为uint16数组2Byte对齐与json数组一一对应

第0项恒为0从第1项开始作为截取图片的时间

示例bin格式截取时间表http://i0.hdslb.com/bfs/videoshot/49075258.bin

hex内容如下

00000000  00 00 00 00 00 08 00 0e  00 13 00 19 00 22 00 28  |.............".(|
00000010  00 2e 00 38 00 3f 00 46  00 50 00 57 00 5d 00 64  |...8.?.F.P.W.].d|
00000020  00 6d 00 75 00 7c 00 85  00 8e 00 94 00 9c 00 a4  |.m.u.|..........|
00000030  00 ab 00 b3 00 b8 00 c0  00 c6 00 ce 00 d6 00 df  |................|
00000040  00 e8 00 ef 00 f6 00 fe  01 05 01 0d 01 13 01 1b  |................|
00000050  01 21 01 2b 01 31 01 36  01 3b 01 42 01 4a 01 53  |.!.+.1.6.;.B.J.S|
00000060  01 5c 01 66 01 6c 01 73  01 78 01 7e 01 87 01 94  |.\.f.l.s.x.~....|
00000070  01 9d 01 a5 01 aa 01 b2  01 b9 01 c4 01 ca 01 cf  |................|
00000080  01 d9 01 df 01 eb 01 f1  01 f8 02 02 02 09 02 10  |................|
00000090  02 15 02 1c 02 22 02 28  02 2e 02 37 02 3f 02 4a  |.....".(...7.?.J|
000000a0  02 4f 02 5a 02 61 02 67  02 6f 02 75 02 7f 02 87  |.O.Z.a.g.o.u....|
000000b0  02 8d 02 92 02 98 02 9e  02 a3 02 ac 02 b3 02 ba  |................|
000000c0  02 c9 02 d4 02 d9 02 e1  02 e7 02 f2 02 fa 03 04  |................|
000000d0  03 0b 03 10 03 1d 03 23  03 2a 03 31 03 39 03 42  |.......#.*.1.9.B|
000000e0  03 4d 03 53 03 59 03 63  03 6e 03 78 03 80 03 87  |.M.S.Y.c.n.x....|
000000f0  03 8d 03 92 03 97 03 a0  03 a7 03 b0 03 be 03 ca  |................|
00000100  03 d1 03 dc 03 e4 03 ec  03 f3 03 fa 04 02 04 0b  |................|
00000110  04 11 04 18 04 1f 04 27  04 31 04 37 04 3e 04 47  |.......'.1.7.>.G|
00000120  04 52 04 57 04 64 04 6f  04 7b 04 81 04 87 04 8d  |.R.W.d.o.{......|
00000130  04 93 04 a0 04 ae 04 b9  04 bf 04 c5 04 cc 04 d4  |................|
00000140  04 da 04 e5 04 ea 04 f5  04 fc 05 04 05 09 05 14  |................|
00000150  05 1a 05 23 05 29 05 30  05 3c 05 43 05 4a 05 51  |...#.).0.<.C.J.Q|
00000160  05 56 05 5b 05 67 05 6e  05 74 05 7b 05 87        |.V.[.g.n.t.{..|