返回提交历史
Modified
video/videostream_url.md
+149
-51
XFEstudio/bilibili-API-collect
补充杜比视界、无损音轨、AV1编码等相关信息 (#469)
* 补充杜比视界、无损音轨、AV1编码等相关信息 * 将视频编码代码单独列表
42bb61a
代码差异
1 个文件
+149
-51
@@ -47,7 +47,7 @@ B站的视频为http流媒体,需要对应的api以视频id获取取流url,
47
47
| 0 | flv格式 | 仅H.264编码<br />部分老视频存在分段现象<br />与mp4格式及dash格式互斥 |
48
48
| 1 | mp4格式 | 仅H.264编码<br />不存在视频分段<br />与flv格式及dash格式互斥 |
49
49
| 16 | dash格式 | H.264编码或H.265编码<br />部分老视频的清晰度上限低于flv格式<br />与mp4格式及flv格式互斥 |
50
| 64 | 是否需求 HDR 视频 | 必须为dash格式<br />需要`qn=125`<br />大多情况需求认证大会员账号 |
50
| 64 | 是否需求 杜比世界(HDR) 视频 | 必须为dash格式<br />需要`qn=125`<br />大多情况需求认证大会员账号 |
51
51
| 128 | 是否需求 4K 分辨率 | 该值与`fourk`字段协同作用<br />需要`qn=120`<br />大多情况需求认证大会员账号 |
52
52
| 256 | 是否需求杜比音频 | 必须为dash格式<br />大多情况需求认证大会员账号 |
53
53
| 512 | 是否需求杜比视界 | 必须为dash格式<br />大多情况需求认证大会员账号 |
@@ -56,6 +56,14 @@ B站的视频为http流媒体,需要对应的api以视频id获取取流url,
56
56
57
57
例如:请求dash格式且需要HDR的视频流,则`fnval=16|64=80`
58
58
59
## 视频编码代码
60
61
| 值 | 含义 | 备注 |
62
| ---- | ---------- | ---------------- |
63
| 7 | AVC编码 | 8K视频无此格式 |
64
| 12 | HEVC编码 | |
65
| 13 | AV1编码 | |
66
59
67
## 视频伴音音质代码
60
68
61
69
| 值 | 含义 |
@@ -63,6 +71,8 @@ B站的视频为http流媒体,需要对应的api以视频id获取取流url,
63
71
| 30216 | 64K |
64
72
| 30232 | 132K |
65
73
| 30280 | 192K |
74
| 30250 | 杜比全景声 |
75
| 30251 | Hi-Res无损 |
66
76
67
77
## 获取视频流URL(web端)
68
78
@@ -126,17 +136,19 @@ B站的视频为http流媒体,需要对应的api以视频id获取取流url,
126
136
| message | str | 空 | 作用尚不明确 |
127
137
| quality | num | 当前的视频分辨率代码 | **值含义见上表** |
128
138
| format | str | 视频格式 | |
129
| timelength | num | 视频长度 | 单位为毫秒<br />不同分辨率/格式可能有略微差异 |
139
| timelength | num | 视频长度(毫秒值) | 单位为毫秒<br />不同分辨率/格式可能有略微差异 |
130
140
| accept_format | str | 视频支持的全部格式 | 每项用`,`分隔 |
131
141
| accept_description | array | 视频支持的分辨率列表 | |
132
142
| accept_quality | array | 视频支持的分辨率代码列表 | **值含义见上表** |
133
143
| video_codecid | num | 固定值:7 | 作用尚不明确 |
134
144
| seek_param | str | 固定值:start | 作用尚不明确 |
135
| seek_type | str | 固定值:offset | 作用尚不明确 |
136
| durl | array | 视频分段 | **注:仅flv/mp4存在此项** |
145
| seek_type | str | offset(dash、flv)<br/> second(mp4) | 作用尚不明确 |
146
| durl | array | 视频分段**注:仅flv、mp4存在此项** | **注:仅flv/mp4存在此项** |
137
147
| dash | obj | dash音视频流信息 | **注:仅dash存在此项** |
138
148
| support_formats | array | 支持格式的详细信息 | |
139
149
| high_format | | null | |
150
| last_play_time | num | 上次播放进度 | 毫秒值 |
151
| last_play_cid | num | 上次播放分p的cid | |
140
152
141
153
`data`中的`accept_description`数组:
142
154
@@ -171,14 +183,15 @@ B站的视频为http流媒体,需要对应的api以视频id获取取流url,
171
183
| new_description | str | 格式描述 | |
172
184
| display_desc | str | 格式描述 | |
173
185
| superscript | str | (?) | |
174
| codecs | array | (?) | |
186
| codecs | array | 可用编码格式列表 | |
175
187
176
188
`support_formats`中的`codecs`数组:
177
189
178
190
| 项 | 类型 | 内容 | 备注 |
179
191
| ---- | ---- | --------------- | ---- |
180
| 0 | str | (?) | |
181
| 1 | str | (?) | |
192
| 0 | str | 例:av01.0.13M.08.0.110.01.01.01.0 | 使用AV1编码 |
193
| 1 | str | 例子:avc1.640034 | 使用AVC编码 |
194
| 2 | str | 例子:hev1.1.6.L153.90 | 使用HEVC编码 |
182
195
183
196
184
197
---
@@ -189,7 +202,7 @@ B站的视频为http流媒体,需要对应的api以视频id获取取流url,
189
202
190
203
| 项 | 类型 | 内容 | 备注 |
191
204
| ---- | ---- | ----------------- | ------------------------- |
192
| 0 | obj | 视频分段1信息 | **注:仅flv方式具有分段** |
205
| 0 | obj | 视频分段1信息 | **注:仅flv、mp4方式具有分段** |
193
206
| n | obj | 视频分段(n+1)信息 | |
194
207
| …… | obj | …… | |
195
208
@@ -250,48 +263,94 @@ curl -G 'http://api.bilibili.com/x/player/playurl' \
250
263
251
264
```json
252
265
{
253
"code": 0,
254
"message": "0",
255
"ttl": 1,
256
"data": {
257
"from": "local",
258
"result": "suee",
259
"message": "",
266
"code": 0,
267
"message": "0",
268
"ttl": 1,
269
"data": {
270
"from": "local",
271
"result": "suee",
272
"message": "",
273
"quality": 64,
274
"format": "flv720",
275
"timelength": 283801,
276
"accept_format": "hdflv2,flv,flv720,flv480,mp4",
277
"accept_description": [
278
"高清 1080P+",
279
"高清 1080P",
280
"高清 720P",
281
"清晰 480P",
282
"流畅 360P"
283
],
284
"accept_quality": [
285
112,
286
80,
287
64,
288
32,
289
16
290
],
291
"video_codecid": 7,
292
"seek_param": "start",
293
"seek_type": "offset",
294
"durl": [
295
{
296
"order": 1,
297
"length": 283801,
298
"size": 70486426,
299
"ahead": "",
300
"vhead": "",
301
"url": "https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-64.flv?e=ig8euxZM2rNcNbNMnwdVhwdlhbK3hwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1662808778&gen=playurlv2&os=cosbv&oi=3719461929&trid=31dc1934e77141bfbdf5ae88aca0b29fu&mid=0&platform=pc&upsig=a4d5f1713e1ba313041d034a958c2414&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=0,3&agrr=1&bw=249068&logo=80000000",
302
"backup_url": [
303
"https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-64.flv?e=ig8euxZM2rNcNbNMnwdVhwdlhbK3hwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1662808778&gen=playurlv2&os=cosbv&oi=3719461929&trid=31dc1934e77141bfbdf5ae88aca0b29fu&mid=0&platform=pc&upsig=a4d5f1713e1ba313041d034a958c2414&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&agrr=1&bw=249068&logo=40000000",
304
"https://upos-sz-mirrorcosb.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-64.flv?e=ig8euxZM2rNcNbNMnwdVhwdlhbK3hwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1662808778&gen=playurlv2&os=cosbbv&oi=3719461929&trid=31dc1934e77141bfbdf5ae88aca0b29fu&mid=0&platform=pc&upsig=7b8a6924948864944815ec0748cc108f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&agrr=1&bw=249068&logo=40000000"
305
]
306
}
307
],
308
"support_formats": [
309
{
260
310
"quality": 112,
261
311
"format": "hdflv2",
262
"timelength": 283701,
263
"accept_format": "hdflv2,flv,flv720,flv480,mp4",
264
"accept_description": [
265
"高清 1080P+",
266
"高清 1080P",
267
"高清 720P",
268
"清晰 480P",
269
"流畅 360P"
270
],
271
"accept_quality": [
272
112,
273
80,
274
64,
275
32,
276
16
277
],
278
"video_codecid": 7,
279
"seek_param": "start",
280
"seek_type": "offset",
281
"durl": [
282
{
283
"order": 1,
284
"length": 283701,
285
"size": 219827828,
286
"ahead": "",
287
"vhead": "",
288
"url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-112.flv?e=ig8euxZM2rNcNbhMnwhVhwdlhzK3hzdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1589565412&gen=playurl&os=hwbv&oi=606631998&trid=e0fa5f9a7610440a871279a28fae85aau&platform=pc&upsig=5f469cb4c190ed54b89bd40cc37eddff&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000",
289
"backup_url": [
290
"http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-112.flv?e=ig8euxZM2rNcNbhMnwhVhwdlhzK3hzdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1589565412&gen=playurl&os=ks3cbv&oi=606631998&trid=e0fa5f9a7610440a871279a28fae85aau&platform=pc&upsig=914ef921c5258e067c382601a4b1f81c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000"
291
]
292
}
293
]
294
}
312
"new_description": "1080P 高码率",
313
"display_desc": "1080P",
314
"superscript": "高码率",
315
"codecs": null
316
},
317
{
318
"quality": 80,
319
"format": "flv",
320
"new_description": "1080P 高清",
321
"display_desc": "1080P",
322
"superscript": "",
323
"codecs": null
324
},
325
{
326
"quality": 64,
327
"format": "flv720",
328
"new_description": "720P 高清",
329
"display_desc": "720P",
330
"superscript": "",
331
"codecs": null
332
},
333
{
334
"quality": 32,
335
"format": "flv480",
336
"new_description": "480P 清晰",
337
"display_desc": "480P",
338
"superscript": "",
339
"codecs": null
340
},
341
{
342
"quality": 16,
343
"format": "mp4",
344
"new_description": "360P 流畅",
345
"display_desc": "360P",
346
"superscript": "",
347
"codecs": null
348
}
349
],
350
"high_format": null,
351
"last_play_time": 0,
352
"last_play_cid": 0
353
}
295
354
}
296
355
```
297
356
@@ -390,12 +449,13 @@ curl -G 'http://api.bilibili.com/x/player/playurl' \
390
449
391
450
| 字段 | 类型 | 内容 | 备注 |
392
451
| --------------- | ----- | ---------- | ------------ |
393
| duration | num | 677 | 视频长度(秒) |
452
| duration | num | 视频长度 | 秒值 |
394
453
| minBufferTime | num | 1.5 | 作用尚不明确 |
395
454
| min_buffer_time | num | 1.5 | 作用尚不明确 |
396
455
| video | array | 视频流信息 | |
397
456
| audio | array | 音频流信息 | |
398
| dolby | | null | |
457
| dolby | obj | 杜比全景声音轨信息 | |
458
| flac | obj | 无损音轨信息 | |
399
459
400
460
`dash`中的`video`数组:
401
461
@@ -437,7 +497,7 @@ curl -G 'http://api.bilibili.com/x/player/playurl' \
437
497
| start_with_sap | num | **同上** | |
438
498
| SegmentBase | obj | 见下表 | url 对应 m4s 文件中,头部的位置 |
439
499
| segment_base | obj | **同上** | |
440
| codecid | num | 视频: 7或12<br />音频: 0 | 7=AVC,12=HEVC <br />出处是 FLV 格式里 VideoTag 中的 CodecId 域;<br />FLV 标准不支持 HEVC,但 codecId 值为 12 是各厂共识 |
500
| codecid | num | | |
441
501
442
502
`video`数组中的对象中的`backup_url`数组:
443
503
@@ -456,6 +516,44 @@ curl -G 'http://api.bilibili.com/x/player/playurl' \
456
516
457
517
> 常规 MP4 文件的索引信息放在 moov box 中,其中包含每一帧 (不止是关键帧) 的一些信息。在 DASH 方式下,关键帧信息移到了 sidx box 里,其他的则分散到了各个 moof (movie fragment) box 中。<br>对这里的文件结构感兴趣的,可以参考标准文档 ISO/IEC 14496-12,如果不想那么深入的话可以百度「MP4 文件结构」。
458
518
519
`dash`中的`dolby`对象:
520
521
此项为”杜比视界“视频独有
522
523
| 字段 | 类型 | 内容 | 备注 |
524
| -------------- | ---- | --------------------------------------------- | ------------------------------------------------------------ |
525
| type | num | 2 | |
526
| audio | array | 杜比音轨列表 | |
527
528
`dolby`对象中的`audio`数组:
529
530
| 项 | 类型 | 内容 | 备注 |
531
| ---- | ---- | ------------------------ | ----------------------------------------------- |
532
| 0 | obj | 杜比音轨信息 | |
533
534
`audio`数组中的对象:
535
536
| 项 | 类型 | 内容 | 备注 |
537
| ---- | ---- | ------------------------ | ----------------------------------------------- |
538
| id | num | 音轨代码,固定为:30250 | |
539
| base_url | str | 音频流url | |
540
| backup_url | array | 音频流备用url列表 | |
541
| bandwidth | num | 音频所需最低带宽 | |
542
| mime_type | num | 音频格式类型 | |
543
| codecs | num | 音频编码信息(ec-3) | |
544
| segment_base | obj | **同上** | |
545
| size | num | 音轨文件大小 |单位为Byte |
546
547
`dash`中的`flac`对象:
548
549
| 项 | 类型 | 内容 | 备注 |
550
| ---- | ---- | ------------------------ | ----------------------------------------------- |
551
| display | bool | 是否在播放器显示切换Hi-Res无损音轨按钮 | |
552
| audio | obj | 音频流信息 | |
553
554
`flac`中的`audio`对象:
555
556
同:`video`及`audio`数组中的对象
459
557
460
558
**示例:**
461
559