fix(live_stream): style & details

Signed-off-by: 晨叶梦春 <65224318+wuziqian211@users.noreply.github.com>
This commit is contained in:
晨叶梦春 2025-05-21 01:57:54 +08:00
parent 7013b34d53
commit 06291bc1e4
No known key found for this signature in database
GPG Key ID: FE72DF87FB90F5E7

View File

@ -4,23 +4,22 @@
> https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo
_请求方式GET_
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ----- | -------- | ------ | ---- |
| room_id | num | 直播间号 | 必要 | 房间号 |
| no_playurl | num | 无视频流 | 非必要 | 置`0`才有视频流 |
| mask | num | - | - | 作用未知,未观察到响应改变 默认1 |
| mask | num | | 非必要 | 作用未知,未观察到响应改变 默认1 |
| qn | num | 质量 | 非必要 | 3000杜比 20000 4K 10000 原画 <br /> 400 蓝光 250 超清 150 高清 <br /> 0 应该是默认 |
| platform | str | 平台 | - | 参考:`web` |
| protocol | num[] | 协议 | - | 参考:`0,1` |
| format | num[] | 格式 | - | 参考:`0,1,2` |
| codec | num[] | 编码 | - | 参考:`0,1,2` |
| dolby | num | 杜比 | - | 参考:`5` |
| panorama | num | 环绕音 | - | 参考:`1` |
> 注意请将Referer设置为相关链接如`https://live.bilibili.com/`
| platform | str | 平台 | 非必要 | 参考:`web` |
| protocol | num[] | 协议 | 非必要 | 参考:`0,1` |
| format | num[] | 格式 | 非必要 | 参考:`0,1,2` |
| codec | num[] | 编码 | 非必要 | 参考:`0,1,2` |
| dolby | num | 杜比 | 非必要 | 参考:`5` |
| panorama | num | 环绕音 | 非必要 | 参考:`1` |
**json回复**
@ -32,6 +31,7 @@ _请求方式GET_
<summary>查看响应示例及响应含义</summary>
请求:
```bash
curl -G 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo' \
--data-urlencode 'room_id=123456789' \ # 请自行替换对应房间号
@ -42,11 +42,11 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo'
--data-urlencode 'codec=0,1,2' \
--data-urlencode 'dolby=5' \
--data-urlencode 'panorama=1' \
--header 'Referer: https://live.bilibili.com' \
--header 'accept: application/json'
```
响应:
```jsonc
{
"code": 0, // 标记是否成功
@ -59,7 +59,7 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo'
"is_hidden": false, // 是否隐藏
"is_locked": false, // 是否锁定
"is_portrait": false,
"live_status": 1, // 直播状态1为开播0为下播
"live_status": 1, // 直播状态1为开播2为未开播0为下播
"hidden_till": 0, // 隐藏直到(目前未找到相关样本)
"lock_till": 0, // 同上,锁定直到
"encrypted": false,
@ -145,6 +145,7 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo'
}
}
```
</details>
## 视频取流
@ -155,6 +156,7 @@ curl -G 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo'
- 最终链接为 `host + base_url + extra`
示例代码javascript:
```javascript
function get_stream_url(data) {
let result = [];
@ -172,6 +174,7 @@ function get_stream_url(data) {
```
示例代码python:
```python
def get_stream_url(data):
for stream in data['data']['playurl_info']['playurl']['stream']:
@ -180,9 +183,7 @@ def get_stream_url(data):
for url_info in codec['url_info']:
yield ''.join([url_info['host'], codec['base_url'], url_info['extra']])
```
最终从响应的链接随意选择一个即可按照一般视频流处理即可目前发现有m3u8和flv两种格式至于编码格式之类问题相关的下载器应该都能处理或者自己根据需要在json回应中挑选
另外有注意到部分链接可能包含客户端ip地址在这方面现在或者将来可能有检测
> [根据真实直播间号获取直播视频流 (旧)](https://github.com/SocialSisterYi/bilibili-API-collect/blob/f6760f4be38d5b592d396b211e48c666286524de/docs/live/live_stream.md)