syntax = "proto3"; package bilibili.playershared; // ArcConf消息 message ArcConf { // 是否支持 bool is_support = 1; // 是否禁用 bool disabled = 2; // 额外内容 ExtraContent extra_content = 3; // 不支持场景列表 repeated int32 unsupport_scene = 4; } // enum ArcType { // ARC_TYPE_NORMAL = 0; // ARC_TYPE_INTERACT = 1; } // 按钮组件 message Button { // 按钮文本 string text = 1; // 按钮跳转链接 string link = 2; // 埋点上报相关 map 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 { // int32 switch_val = 1; // int32 selected_val = 2; } } // 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 DeviceConf { ConfValue conf_value = 1; } // 当前分辨率信息 message Dimension { // 宽 int32 width = 1; // 长 int32 height = 2; // 旋转角度 int32 rotate = 3; } // 杜比伴音流信息 message DolbyItem { // 杜比类型 enum Type { NONE = 0; // NONE COMMON = 1; // 普通杜比音效 ATMOS = 2; // 全景杜比音效 } // 杜比类型 Type type = 1; // 音频流 repeated DashItem audio = 2; } // DRM类型 enum DrmTechType { // UNKNOWN_DRM = 0; // FAIR_PLAY = 1; // WIDE_VINE = 2; // 哔哩哔哩自研DRM BILI_DRM = 3; } // 事件 message Event { // 震动 Shake shake = 1; } // ? 错误码补充信息 message ExtraContent { // string disable_reason = 1; // int64 disable_code = 2; } // 播放历史 message History { // HistoryInfo current_video = 1; // HistoryInfo related_video = 2; } // message HistoryInfo { // int64 progress = 1; // int64 last_play_cid = 2; // Toast toast = 3; // Toast toast_without_time = 4; // int64 last_play_aid = 5; } // message Interaction { // Node history_node = 1; // int64 graph_version = 2; // string msg = 3; // int64 mark = 4; } // HIRES伴音流信息 message LossLessItem { // 是否为hires bool is_lossless_audio = 1; // 音频流信息 DashItem audio = 2; // 是否需要大会员 bool need_vip = 3; } // message Node { // int64 node_id = 1; // string title = 2; // int64 cid = 3; } // message PlayArc { // VideoType video_type = 1; // uint64 aid = 2; // uint64 cid = 3; // DrmTechType drm_tech_type = 4; // ArcType arc_type = 5; // Interaction interaction = 6; // Dimension dimension = 7; } // 播放页信息-响应: PlayArcConf message PlayArcConf { map arc_confs = 1; } // message PlayDeviceConf { // map device_confs = 1; } // 错误码 enum PlayErr { NoErr = 0; // WithMultiDeviceLoginErr = 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; } // Dash Response, 未使用 message ResponseDash { repeated DashItem video = 1; repeated DashItem audio = 2; } // 分段流条目 message ResponseUrl { // 分段序号 uint32 order = 1; // 分段时长 uint64 length = 2; // 分段大小 uint64 size = 3; // 主线流 string url = 4; // 备用流 repeated string backup_url = 5; // md5 string md5 = 6; } // 方案 message Scheme { enum ActionType { UNKNOWN = 0; SHOW_TOAST = 1; } // ActionType action_type = 1; // string toast = 2; } // 视频流信息: 分段流 message SegmentVideo { repeated ResponseUrl segment = 1; } // 震动 message Shake { // string file = 1; } // 视频流信息 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; } // 视频流信息: 流媒体元数据: 清晰度不满足条件信息 message StreamLimit { // 标题 string title = 1; // 跳转地址 string uri = 2; // 提示信息 string msg = 3; } // Toast信息 message Toast { // toast文案 string text = 1; // toast按钮 Button button = 2; } // enum UnsupportScene { // UNKNOWN_SCENE = 0; // PREMIERE = 1; } // 视频类型 enum VideoType { UNKNOWN = 0; // 用户生成内容 UGC = 1; // 专业生产内容 PGC = 2; } // 播放页信息-请求: 音视频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; // 是否支持投屏 bool support_project = 10; } // 响度均衡操作信息 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; }