add: new united playurl grpc interface (#642)

This commit is contained in:
陈寒彤
2023-03-28 04:08:46 +03:00
committed by GitHub
parent 280f69f7ee
commit 28e8a7cbf0
6 changed files with 2590 additions and 2485 deletions

View File

@@ -0,0 +1,14 @@
syntax = "proto3";
package bilibili.app.playerunite.pgcanymodel;
import "bilibili/pgc/gateway/player/v2/playurl.proto";
message PGCAnyModel {
bilibili.pgc.gateway.player.v2.PlayViewBusinessInfo business = 3;
bilibili.pgc.gateway.player.v2.Event event = 4;
bilibili.pgc.gateway.player.v2.ViewInfo view_info = 5;
bilibili.pgc.gateway.player.v2.PlayAbilityExtConf play_ext_conf = 6;
bilibili.pgc.gateway.player.v2.PlayExtInfo play_ext_info = 7;
}

View File

@@ -0,0 +1,27 @@
syntax = "proto3";
package bilibili.app.playerunite.ugcanymodel;
message ButtonStyle {
string text = 1;
string text_color = 2;
string bg_color = 3;
string jump_link = 4;
}
enum PlayLimitCode {
PLC_UNKNOWN = 0;
PLC_NOTPAYED = 1;
}
message PlayLimit {
PlayLimitCode code = 1;
string message = 2;
string sub_message = 3;
ButtonStyle button = 4;
}
message UGCAnyModel {
PlayLimit play_limit = 1;
}

View File

@@ -0,0 +1,45 @@
syntax = "proto3";
package bilibili.app.playerunite.v1;
import "bilibili/playershared/playershared.proto";
import "google/protobuf/any.proto";
// 统一视频url
service Player {
// 视频地址
rpc PlayViewUnite (PlayViewUniteReq) returns (PlayViewUniteReply);
}
//
message PlayViewUniteReq {
// 请求资源VOD信息
bilibili.playershared.VideoVod vod = 1;
//
string spmid = 2;
//
string from_spmid = 3;
// 补充信息, 如ep_id等
map<string, string> extra_content = 4;
}
//
message PlayViewUniteReply {
// 音视频流信息
bilibili.playershared.VodInfo vod_info = 1;
//
bilibili.playershared.PlayArcConf play_arc_conf = 2;
//
bilibili.playershared.PlayDeviceConf play_device_conf = 3;
//
bilibili.playershared.Event event = 4;
// 使用 pgcanymodel / ugcanymodel 进行proto any转换成对应业务码结构体
google.protobuf.Any supplement = 5;
//
bilibili.playershared.PlayArc play_arc = 6;
//
bilibili.playershared.QnTrialInfo qn_trial_info = 7;
//
bilibili.playershared.History history = 8;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,426 +1,445 @@
syntax = "proto3";
package bilibili.playershared;
message ArcConf {
bool is_support = 1;
bool disable = 2;
ExtraContent extra_connent = 3;
repeated int32 unsupport_scene = 4;
}
// 视频编码
enum CodeType {
NOCODE = 0; //
CODE264 = 1; // H264
CODE265 = 2; // H265
CODEAV1 = 3; // AV1
}
// 功能类型
enum ConfType {
NoType = 0;
FLIPCONF = 1;
CASTCONF = 2;
FEEDBACK = 3;
SUBTITLE = 4;
PLAYBACKRATE = 5;
TIMEUP = 6;
PLAYBACKMODE = 7;
SCALEMODE = 8;
BACKGROUNDPLAY = 9;
LIKE = 10;
DISLIKE = 11;
COIN = 12;
ELEC = 13;
SHARE = 14;
SCREENSHOT = 15;
LOCKSCREEN = 16;
RECOMMEND = 17;
PLAYBACKSPEED = 18;
DEFINITION = 19;
SELECTIONS = 20;
NEXT = 21;
EDITDM = 22;
SMALLWINDOW = 23;
SHAKE = 24;
OUTERDM = 25;
INNERDM = 26;
PANORAMA = 27;
DOLBY = 28;
COLORFILTER = 29;
LOSSLESS = 30;
FREYAENTER = 31;
FREYAFULLENTER = 32;
SKIPOPED = 33;
RECORDSCREEN = 34;
DUBBING = 35;
LISTEN = 36;
}
message ConfValue {
oneof value {
// dash流
int32 switch_val = 1;
// 分段流
int32 selected_val = 2;
}
}
message DeviceConf {
ConfValue conf_value = 1;
}
// DRM类型
enum DrmTechType {
//
UNKNOWN_DRM = 0;
//
FAIR_PLAY = 1;
//
WIDE_VINE = 2;
// 哔哩哔哩自研DRM
BILI_DRM = 3;
}
// ? 错误码补充信息
message ExtraContent {
//
string disable_reason = 1;
//
uint64 disable_code = 2;
}
// 播放历史
message History {
// 播放进度
uint64 progress = 1;
//
string toast = 2;
//
uint64 last_play_cid = 3;
}
message PlayDeviceConf {
map<int32, DeviceConf> arc_confs = 1;
}
// 错误码
enum PlayErr {
NoErr = 0; //
WithMultiDeviceLoginErr = 1; // 管控类型的错误码
}
// 方案
message Scheme {
enum ActionType {
UNKNOWN = 0;
SHOW_TOAST = 1;
}
ActionType action_type = 1;
string toast = 2;
}
//
enum UnsupportScene {
//
UNKNOWN_SCENE = 0;
//
PREMIERE = 1;
}
// 视频类型
enum VideoType {
UNKNOWN = 0;
// 用户生成内容
UGC = 1;
// 专业生产内容
PGC = 2;
}
// 视频流信息
message Stream {
// 元数据
StreamInfo stream_info = 1;
// 流数据
oneof content {
// dash流
DashVideo dash_video = 2;
// 分段流
SegmentVideo segment_video = 3;
}
}
// 视频流信息: 元数据
message StreamInfo {
// 清晰度
uint32 quality = 1;
// 格式
string format = 2;
// 格式描述
string description = 3;
// 错误码
uint32 err_code = 4;
// 不满足条件信息
StreamLimit limit = 5;
// 是否需要vip
bool need_vip = 6;
// 是否需要登录
bool need_login = 7;
// 是否完整
bool intact = 8;
// 是否非全二压
bool no_rexcode = 9;
// 清晰度属性位
int64 attribute = 10;
// 新版格式描述
string new_description = 11;
// 格式文字
string display_desc = 12;
// 新版格式描述备注
string superscript = 13;
//
bool vip_free = 14;
//
string subtitle = 15;
// 方案
Scheme scheme = 16;
// 支持drm
bool support_drm = 17;
}
// Dash条目
message DashItem {
// 清晰度
uint32 id = 1;
// 主线流
string base_url = 2;
// 备用流
repeated string backup_url = 3;
// 带宽
uint32 bandwidth = 4;
// 编码id
uint32 codecid = 5;
// md5
string md5 = 6;
// 大小
uint64 size = 7;
// 帧率
string frame_rate = 8;
// DRM密钥
string widevine_pssh = 9;
}
// 视频流信息: dash流
message DashVideo {
// 主线流
string base_url = 1;
// 备用流
repeated string backup_url = 2;
// 带宽
uint32 bandwidth = 3;
// 编码id
uint32 codecid = 4;
// md5
string md5 = 5;
// 大小
uint64 size = 6;
// 伴音质量id
uint32 audio_id = 7;
// 是否非全二压
bool no_rexcode = 8;
// 帧率
string frame_rate = 9;
// 宽
int32 width = 10;
// 高
int32 height = 11;
// DRM密钥
string widevine_pssh = 12;
}
// 视频流信息: 分段流
message SegmentVideo {
repeated ResponseUrl segment = 1;
}
// 分段流条目
message ResponseUrl {
// 分段序号
uint32 order = 1;
// 分段时长
uint64 length = 2;
// 分段大小
uint64 size = 3;
// 主线流
string url = 4;
// 备用流
repeated string backup_url = 5;
// md5
string md5 = 6;
}
// Dash Response, 未使用
message ResponseDash {
repeated DashItem video = 1;
repeated DashItem audio = 2;
}
// 视频流信息: 流媒体元数据: 清晰度不满足条件信息
message StreamLimit {
// 标题
string title = 1;
// 跳转地址
string uri = 2;
// 提示信息
string msg = 3;
}
// 播放页信息-请求: 音视频VOD
message VideoVod {
// 视频aid
int32 aid = 1;
// 视频cid
int32 cid = 2;
// 清晰度
uint64 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;
// 视频编码
CodeType prefer_codec_type = 9;
// 响度均衡
uint64 voice_balance = 10;
}
// 播放页信息-响应: VOD音视频信息
message VodInfo {
// 视频清晰度
uint32 quality = 1;
// 视频格式
string format = 2;
// 视频时长
uint64 timelength = 3;
// 视频编码id
uint32 video_codecid = 4;
// 视频
repeated Stream stream_list = 5;
// 伴音流
repeated DashItem dash_audio = 6;
// 杜比伴音流
DolbyItem dolby = 7;
// 响度均衡操作信息
VolumeInfo volume = 8;
// HIRES伴音流信息
LossLessItem loss_less_item = 9;
}
// 杜比伴音流信息
message DolbyItem {
// 杜比类型
enum Type {
NONE = 0; // NONE
COMMON = 1; // 普通杜比音效
ATMOS = 2; // 全景杜比音效
}
// 杜比类型
Type type = 1;
// 音频流
DashItem audio = 2;
}
// HIRES伴音流信息
message LossLessItem {
// 是否为hires
bool is_lossless_audio = 1;
// 音频流信息
DashItem audio = 2;
// 是否需要大会员
bool need_vip = 3;
}
// 响度均衡操作信息
message VolumeInfo {
// Measured integrated loudness 实际综合响度
double measured_i = 1;
// Measured loudness range 实际响度范围
double measured_lra = 2;
// Measured true peak 实际响度真峰值
double measured_tp = 3;
// Measured threshold 实际响度阈值
double measured_threshold = 4;
// Target offset gain(Gain is applied before the true-peak limiter) 目标增益Offset(增益在真实峰值限制器之前应用)
double target_offset = 5;
// Target integrated loudness 目标综合响度
double target_i = 6;
// Target true peak 目标响度真峰值
double target_tp = 7;
}
//
message PlayArc {
VideoType video_type = 1;
uint64 aid = 2;
uint64 cid = 3;
DrmTechType drm_tech_type = 4;
}
// 播放页信息-响应: PlayArcConf
message PlayArcConf {
map<int32, PlayArc> arc_confs = 1;
}
// 高画质试看信息: 按钮
message QnTrialButton {
string text = 1;
string link = 2;
}
// 播放页信息-响应: 高画质试看信息
message QnTrialInfo {
// 能否试看高画质
bool trial_able = 1;
//
int32 remaining_times = 2;
//
int32 start = 3;
//
int32 time_length = 4;
//
QnTrialToast start_toast = 5;
//
QnTrialToast end_toast = 6;
//
QnTrialButton quality_open_tip_btn = 8;
}
// 高画质试看信息: Toast信息
message QnTrialToast {
// toast文案 老字段
string text = 1;
// toast按钮
QnTrialButton button = 2;
}
// 事件
message Event {
// 震动
Shake shake = 1;
}
// 震动
message Shake {
//
string file = 1;
}
syntax = "proto3";
package bilibili.playershared;
//
message ArcConf {
bool is_support = 1;
bool disable = 2;
ExtraContent extra_content = 3;
repeated int32 unsupport_scene = 4;
}
// 按钮组件
message Button {
// 按钮文本
string text = 1;
// 按钮跳转链接
string link = 2;
// 埋点上报相关
map<string, string> report_params = 3;
}
// 视频编码
enum CodeType {
NOCODE = 0; // 不指定
CODE264 = 1; // H264
CODE265 = 2; // H265
CODEAV1 = 3; // AV1
}
// 功能类型
enum ConfType {
NoType = 0;
FLIPCONF = 1;
CASTCONF = 2;
FEEDBACK = 3;
SUBTITLE = 4;
PLAYBACKRATE = 5;
TIMEUP = 6;
PLAYBACKMODE = 7;
SCALEMODE = 8;
BACKGROUNDPLAY = 9;
LIKE = 10;
DISLIKE = 11;
COIN = 12;
ELEC = 13;
SHARE = 14;
SCREENSHOT = 15;
LOCKSCREEN = 16;
RECOMMEND = 17;
PLAYBACKSPEED = 18;
DEFINITION = 19;
SELECTIONS = 20;
NEXT = 21;
EDITDM = 22;
SMALLWINDOW = 23;
SHAKE = 24;
OUTERDM = 25;
INNERDM = 26;
PANORAMA = 27;
DOLBY = 28;
COLORFILTER = 29;
LOSSLESS = 30;
FREYAENTER = 31;
FREYAFULLENTER = 32;
SKIPOPED = 33;
RECORDSCREEN = 34;
DUBBING = 35;
LISTEN = 36;
}
//
message ConfValue {
oneof value {
// DASH流
int32 switch_val = 1;
// 分段流
int32 selected_val = 2;
}
}
//
message DeviceConf {
ConfValue conf_value = 1;
}
// DRM类型
enum DrmTechType {
//
UNKNOWN_DRM = 0;
//
FAIR_PLAY = 1;
//
WIDE_VINE = 2;
// 哔哩哔哩自研DRM
BILI_DRM = 3;
}
// ? 错误码补充信息
message ExtraContent {
//
string disable_reason = 1;
//
uint64 disable_code = 2;
}
// 播放历史
message History {
//
HistoryInfo current_video = 1;
//
HistoryInfo related_video = 2;
}
message HistoryInfo {
//
int64 progress = 1;
//
int64 last_play_cid = 2;
}
//
message PlayDeviceConf {
//
map<int32, DeviceConf> arc_confs = 1;
}
// 错误码
enum PlayErr {
NoErr = 0; //
WithMultiDeviceLoginErr = 1; // 管控类型的错误码
}
// 方案
message Scheme {
enum ActionType {
UNKNOWN = 0;
SHOW_TOAST = 1;
}
//
ActionType action_type = 1;
//
string toast = 2;
}
//
enum UnsupportScene {
//
UNKNOWN_SCENE = 0;
//
PREMIERE = 1;
}
// 视频类型
enum VideoType {
UNKNOWN = 0;
// 用户生成内容
UGC = 1;
// 专业生产内容
PGC = 2;
}
// 视频流信息
message Stream {
// 元数据
StreamInfo stream_info = 1;
// 流数据
oneof content {
// dash流
DashVideo dash_video = 2;
// 分段流
SegmentVideo segment_video = 3;
}
}
// 视频流信息: 元数据
message StreamInfo {
// 清晰度
uint32 quality = 1;
// 格式
string format = 2;
// 格式描述
string description = 3;
// 错误码
uint32 err_code = 4;
// 不满足条件信息
StreamLimit limit = 5;
// 是否需要vip
bool need_vip = 6;
// 是否需要登录
bool need_login = 7;
// 是否完整
bool intact = 8;
// 是否非全二压
bool no_rexcode = 9;
// 清晰度属性位
int64 attribute = 10;
// 新版格式描述
string new_description = 11;
// 格式文字
string display_desc = 12;
// 新版格式描述备注
string superscript = 13;
//
bool vip_free = 14;
//
string subtitle = 15;
// 方案
Scheme scheme = 16;
// 支持drm
bool support_drm = 17;
}
// Dash条目
message DashItem {
// 清晰度
uint32 id = 1;
// 主线流
string base_url = 2;
// 备用流
repeated string backup_url = 3;
// 带宽
uint32 bandwidth = 4;
// 编码id
uint32 codecid = 5;
// md5
string md5 = 6;
// 大小
uint64 size = 7;
// 帧率
string frame_rate = 8;
// DRM密钥
string widevine_pssh = 9;
}
// 视频流信息: dash流
message DashVideo {
// 主线流
string base_url = 1;
// 备用流
repeated string backup_url = 2;
// 带宽
uint32 bandwidth = 3;
// 编码id
uint32 codecid = 4;
// md5
string md5 = 5;
// 大小
uint64 size = 6;
// 伴音质量id
uint32 audio_id = 7;
// 是否非全二压
bool no_rexcode = 8;
// 帧率
string frame_rate = 9;
//
int32 width = 10;
//
int32 height = 11;
// DRM密钥
string widevine_pssh = 12;
}
// 视频流信息: 分段流
message SegmentVideo {
repeated ResponseUrl segment = 1;
}
// 分段流条目
message ResponseUrl {
// 分段序号
uint32 order = 1;
// 分段时长
uint64 length = 2;
// 分段大小
uint64 size = 3;
// 主线流
string url = 4;
// 备用流
repeated string backup_url = 5;
// md5
string md5 = 6;
}
// Dash Response, 未使用
message ResponseDash {
repeated DashItem video = 1;
repeated DashItem audio = 2;
}
// 视频流信息: 流媒体元数据: 清晰度不满足条件信息
message StreamLimit {
// 标题
string title = 1;
// 跳转地址
string uri = 2;
// 提示信息
string msg = 3;
}
// 播放页信息-请求: 音视频VOD
message VideoVod {
// 视频aid
int32 aid = 1;
// 视频cid
int32 cid = 2;
// 清晰度
uint64 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;
// 视频编码
CodeType prefer_codec_type = 9;
// 响度均衡
uint64 voice_balance = 10;
}
// 播放页信息-响应: VOD音视频信息
message VodInfo {
// 视频清晰度
uint32 quality = 1;
// 视频格式
string format = 2;
// 视频时长
uint64 timelength = 3;
// 视频编码id
uint32 video_codecid = 4;
// 视频流
repeated Stream stream_list = 5;
// 伴音流
repeated DashItem dash_audio = 6;
// 杜比伴音流
DolbyItem dolby = 7;
// 响度均衡操作信息
VolumeInfo volume = 8;
// HIRES伴音流信息
LossLessItem loss_less_item = 9;
}
// 杜比伴音流信息
message DolbyItem {
// 杜比类型
enum Type {
NONE = 0; // NONE
COMMON = 1; // 普通杜比音效
ATMOS = 2; // 全景杜比音效
}
// 杜比类型
Type type = 1;
// 音频流
repeated DashItem audio = 2;
}
// HIRES伴音流信息
message LossLessItem {
// 是否为hires
bool is_lossless_audio = 1;
// 音频流信息
DashItem audio = 2;
// 是否需要大会员
bool need_vip = 3;
}
// 响度均衡操作信息
message VolumeInfo {
// Measured integrated loudness 实际综合响度
double measured_i = 1;
// Measured loudness range 实际响度范围
double measured_lra = 2;
// Measured true peak 实际响度真峰值
double measured_tp = 3;
// Measured threshold 实际响度阈值
double measured_threshold = 4;
// Target offset gain(Gain is applied before the true-peak limiter) 目标增益Offset(增益在真实峰值限制器之前应用)
double target_offset = 5;
// Target integrated loudness 目标综合响度
double target_i = 6;
// Target true peak 目标响度真峰值
double target_tp = 7;
}
//
message PlayArc {
//
VideoType video_type = 1;
//
uint64 aid = 2;
//
uint64 cid = 3;
//
DrmTechType drm_tech_type = 4;
}
// 播放页信息-响应: PlayArcConf
message PlayArcConf {
map<int32, ArcConf> arc_confs = 1;
}
// 播放页信息-响应: 高画质试看信息
message QnTrialInfo {
// 能否试看高画质
bool trial_able = 1;
//
int32 remaining_times = 2;
//
int32 start = 3;
//
int32 time_length = 4;
//
Toast start_toast = 5;
//
Toast end_toast = 6;
//
Button quality_open_tip_btn = 8;
}
// Toast信息
message Toast {
// toast文案
string text = 1;
// toast按钮
Button button = 2;
}
// 事件
message Event {
// 震动
Shake shake = 1;
}
// 震动
message Shake {
//
string file = 1;
}

File diff suppressed because it is too large Load Diff