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 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 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; }