-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
playurl.proto
265 lines (246 loc) · 6.8 KB
/
playurl.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
syntax = "proto3";
package bilibili.pgc.gateway.player.v1;
import "bilibili/app/playurl/v1/playurl.proto";
// 播放地址
service PlayURL {
// 播放页信息
rpc PlayView (PlayViewReq) returns (PlayViewReply);
// 获取投屏地址
rpc Project (ProjectReq) returns (ProjectReply);
// 直播播放页信息
rpc LivePlayView (LivePlayViewReq) returns (LivePlayViewReply);
}
// 其他业务信息
message BusinessInfo {
// 当前视频是否是预览
bool is_preview = 1;
// 用户是否承包过
bool bp = 2;
// drm使用
string marlin_token = 3;
}
// 事件
message Event {
// 震动
Shake shake = 1;
}
// 播放信息
message LivePlayInfo {
//
int32 current_qn = 1;
//
repeated QualityDescription quality_description = 2;
//
repeated ResponseDataUrl durl = 3;
}
// 直播播放页信息-响应
message LivePlayViewReply {
// 房间信息
RoomInfo room_info = 1;
// 播放信息
LivePlayInfo play_info = 2;
}
// 直播播放页信息-请求
message LivePlayViewReq {
// 剧集epid
int64 ep_id = 1;
// 清晰度
// 0,10000:原画 400:蓝光 250:超清 150:高清 80:流畅
uint32 quality = 2;
// 类型
// 0:音频 2:hevc 4:dash 8:p2p, 16:蒙版
uint32 ptype = 3;
// 是否请求https
bool https = 4;
// 0:默认直播间播放 1:投屏播放
uint32 play_type = 5;
// 投屏设备
// 0:默认其他 1:OTT设备
int32 device_type = 6;
}
// 禁用功能配置
message PlayAbilityConf {
bool background_play_disable = 1; // 后台播放
bool flip_disable = 2; // 镜像反转
bool cast_disable = 3; // 投屏
bool feedback_disable = 4; // 反馈
bool subtitle_disable = 5; // 字幕
bool playback_rate_disable = 6; // 播放速度
bool time_up_disable = 7; // 定时停止
bool playback_mode_disable = 8; // 播放方式
bool scale_mode_disable = 9; // 画面尺寸
bool like_disable = 10; // 赞
bool dislike_disable = 11; // 踩
bool coin_disable = 12; // 投币
bool elec_disable = 13; // 充电
bool share_disable = 14; // 分享
bool screen_shot_disable = 15; // 截图
bool lock_screen_disable = 16; // 锁定
bool recommend_disable = 17; // 相关推荐
bool playback_speed_disable = 18; // 播放速度
bool definition_disable = 19; // 清晰度
bool selections_disable = 20; // 选集
bool next_disable = 21; // 下一集
bool edit_dm_disable = 22; // 编辑弹幕
bool small_window_disable = 23; // 小窗
bool shake_disable = 24; // 震动
bool outer_dm_disable = 25; // 外层面板弹幕设置
bool inner_dm_disable = 26; // 三点内弹幕设置
bool freya_enter_disable = 27; // 一起看入口
bool dolby_disable = 28; // 杜比音效
bool freya_full_disable = 29; // 全屏一起看入口
bool skip_oped_switch_disable = 30; //
}
// 播放页信息-响应
message PlayViewReply {
// 视频流信息
bilibili.app.playurl.v1.VideoInfo video_info = 1;
// 播放控件用户自定义配置
PlayAbilityConf play_conf = 2;
// 业务需要的其他信息
BusinessInfo business = 3;
// 事件
Event event = 4;
}
// 播放页信息-请求
message PlayViewReq {
// 剧集epid
int64 epid = 1;
// 视频cid
int64 cid = 2;
// 清晰度
int64 qn = 3;
// 视频流版本
int32 fnver = 4;
// 视频流格式
int32 fnval = 5;
// 下载模式
// 0:播放 1:flv下载 2:dash下载
uint32 download = 6;
// 流url强制是用域名
// 0:允许使用ip 1:使用http 2:使用https
int32 force_host = 7;
// 是否4K
bool fourk = 8;
// 当前页spm
string spmid = 9;
// 上一页spm
string from_spmid = 10;
// 青少年模式
int32 teenagers_mode = 11;
// 视频编码
bilibili.app.playurl.v1.CodeType prefer_codec_type = 12;
// 是否强制请求预览视频
bool is_preview = 13;
// 一起看房间id
int64 room_id = 14;
}
// 投屏地址-响应
message ProjectReply {
bilibili.app.playurl.v1.PlayURLReply project = 1;
}
// 投屏地址-请求
message ProjectReq {
// 剧集epid
int64 ep_id = 1;
// 视频cid
int64 cid = 2;
// 清晰度
int64 qn = 3;
// 视频流版本
int32 fnver = 4;
// 视频流格式
int32 fnval = 5;
// 下载模式
// 0:播放 1:flv下载 2:dash下载
uint32 download = 6;
// 流url强制是用域名
// 0:允许使用ip 1:使用http 2:使用https
int32 forceHost = 7;
// 是否4K
bool fourk = 8;
// 当前页spm
string spmid = 9;
// 上一页spm
string fromSpmid = 10;
// 使用协议
// 0:默认乐播 1:自建协议 2:云投屏 3:airplay
int32 protocol = 11;
// 投屏设备
// 0:默认其他 1:OTT设备
int32 device_type = 12;
//
bool use_new_project_code = 13;
}
//
message QualityDescription {
//
int32 qn = 1;
//
string desc = 2;
}
//
message ResponseDataUrl {
string url = 1;
// 表示stream类型,按位表示
// Value| 1 | 1 | 1 | 1 | 1
// --------------------------------------------
// desc | mask | p2p | dash | hevc | only-audio
uint32 stream_type = 2;
// 表示支持p2p的cdn厂商,按位表示
// 值 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1
// -----------------------------------------------
// CDN | hw | bdy | bsy | ws | txy | qn | js | bvc
uint32 ptag = 3;
}
// 房间信息
message RoomInfo {
// 房间长号
int64 room_id = 1;
// 主播mid
int64 uid = 2;
// 状态相关
RoomStatusInfo status = 3;
// 展示相关
RoomShowInfo show = 4;
}
// 房间信息-展示相关
message RoomShowInfo {
// 短号
int64 short_id = 1;
// 人气值
int64 popularity_count = 8;
// 最近一次开播时间戳
int64 live_start_time = 10;
}
// 房间信息-状态相关
message RoomStatusInfo {
// 直播间状态
// 0:未开播 1:直播中 2:轮播中
int64 live_status = 1;
// 横竖屏方向
// 0:横屏 1:竖屏
int64 live_screen_type = 2;
// 是否开播过标识
int64 live_mark = 3;
// 封禁状态
// 0:未封禁 1:审核封禁 2:全网封禁
int64 lock_status = 4;
// 封禁时间戳
int64 lock_time = 5;
// 隐藏状态
// 0:不隐藏 1:隐藏
int64 hidden_status = 6;
// 隐藏时间戳
int64 hidden_time = 7;
// 直播类型
// 0:默认 1:摄像头直播 2;录屏直播 3:语音直播
int64 live_type = 8;
//
int64 room_shield = 9;
}
// 震动
message Shake {
// 文件地址
string file = 1;
}