syntax = "proto3"; package bilibili.pgc.gateway.player.v2; import "google/protobuf/timestamp.proto"; // 视频url service PlayURL { // 播放页信息 rpc PlayView (PlayViewReq) returns (PlayViewReply); // rpc PlayViewComic(PlayViewReq) returns (PlayViewReply); } // message Animation { // map<string, string> qn_svga_animation_map = 1; } // message AudioMaterialProto { // string audio_id = 1; // string title = 2; // string edition = 3; // uint64 person_id = 4; // string person_name = 5; // string person_avatar = 6; // repeated DashItem audio = 7; } // 角标信息 message BadgeInfo { // 角标文案 string text = 1; // 角标色值 string bg_color = 2; // 角标色值-夜间模式 string bg_color_night = 3; // 文案色值 string text_color = 4; // ? 新版本客户端已弃用此项 GradientColor bg_gradient_color = 5; // string img = 6; } // Dialog组件: 底部显示 message BottomDisplay { // 文案 TextInfo title = 1; // 图标 string icon = 2; } // 按钮信息 message ButtonInfo { // 按钮文案 string text = 1; // 按钮字体色值 string text_color = 2; // 按钮字体色值-夜间模式 string text_color_night = 3; // 按钮背景色 string bg_color = 4; // 按钮背景色-夜间模式 string bg_color_night = 5; // 按钮链接 string link = 6; // 按钮动作类型 string action_type = 7; // 角标信息 BadgeInfo badge_info = 8; // 埋点上报信息 Report report = 9; // 左侧删除线样式文案 string left_strikethrough_text = 10; // 缩略按钮文案信息 TextInfo simple_text_info = 11; // 缩略按钮背景色值 string simple_bg_color = 12; // 缩略按钮字体色值-夜间模式 string simple_bg_color_night = 13; // GradientColor bg_gradient_color = 14; // map<string, string> order_report_params = 15; // TaskParam task_param = 16; // string pc_link = 17; } // 投屏限制. code = 0 时为无限制, 否则表示不不允许投屏并提示message message CastTips { // int32 code = 1; // string message = 2; } // 跳过片头/片尾配置 message ClipInfo { // int64 material_no = 1; // DASH分段始 int32 start = 2; // DASH分段终 int32 end = 3; // Clip类型 ClipType clip_type = 4; // 跳过片头/片尾时的提示语 string toast_text = 5; // MultiView multi_view = 6; } // 跳过片头/片尾配置: Clip类型 enum ClipType { NT_UNKNOWN = 0; // CLIP_TYPE_OP = 1; // 跳过OP CLIP_TYPE_ED = 2; // 跳过ED CLIP_TYPE_HE = 3; // CLIP_TYPE_MULTI_VIEW = 4; // CLIP_TYPE_AD = 5; // } // 编码类型 enum CodeType { NOCODE = 0; // 默认 CODE264 = 1; // H.264 CODE265 = 2; // H.265 } // message ContinuePlayInfo { // int64 continue_play_ep_id = 1; } // 优惠券 message Coupon { // 优惠券token string coupon_token = 1; // 优惠券类型 // 1:折扣券 2:满减券 3:兑换券 int64 type = 2; // 优惠券面值 string value = 3; // 优惠券使用描述 string use_desc = 4; // 优惠券标题 string title = 5; // 优惠券描述 string desc = 6; // 优惠券支付按钮文案 string pay_button_text = 7; // 优惠券支付按钮删除线文案 string pay_button_text_line_through = 8; // 实付金额 string real_amount = 9; // 使用过期时间 google.protobuf.Timestamp expire_time = 10; // int64 otype = 11; // string amount = 12; } // 优惠券信息 message CouponInfo { // 提示框信息 CouponToast toast = 1; // 弹窗信息 PopWin pop_win = 2; } // 优惠券提示框文案信息 message CouponTextInfo { // 提示框文案-播正片6分钟预览 string positive_preview = 1; // 提示框文案-播非正片分节ep string section = 2; } // 优惠券提示框信息 message CouponToast { // 提示框文案信息 CouponTextInfo text_info = 1; // 提示框按钮 ButtonInfo button = 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 widevine 密钥 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 DataControl { // bool need_watch_progress = 1; } // 鉴权浮层 message Dialog { // 鉴权限制码 int64 code = 1; // 鉴权限制信息 string msg = 2; // 浮层类型 string type = 3; // 浮层样式类型 string style_type = 4; // 浮层配置 DialogConfig config = 5; // 标题 TextInfo title = 6; // 副标题 TextInfo subtitle = 7; // 图片信息 ImageInfo image = 8; // 按钮列表 repeated ButtonInfo button = 9; // 底部描述 ButtonInfo bottom_desc = 10; // 埋点上报信息 Report report = 11; // 倒计时 秒 int32 count_down_sec = 12; // 右下描述 TextInfo right_bottom_desc = 13; // repeated BottomDisplay bottom_display = 14; // repeated PlayList play_list = 15; } // 鉴权浮层配置 message DialogConfig { // 是否显示高斯模糊背景图 bool is_show_cover = 1; // 是否响应转屏 bool is_orientation_enable = 2; // 是否响应上滑吸顶 bool is_nested_scroll_enable = 3; // 是否强制竖屏 bool is_force_halfscreen_enable = 4; // 是否启用背景半透明 bool is_background_translucent_enable = 5; } // 当前分辨率信息 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; // 音频流 DashItem audio = 2; } // DRM技术类型 enum DrmTechType { NON = 0; // FAIR_PLAY = 1; // WIDE_VINE = 2; // BILI_DRM = 3; // } // 播放结束后的尾页Dialog message EndPage { // Dialog dialog = 1; // bool hide = 2; } // message EpInlineVideo { // int64 material_no = 1; // int64 aid = 2; // int64 cid = 3; } // 剧集广告信息 message EpisodeAdvertisementInfo { // int64 aid = 1; // string title = 2; // string link = 3; // int32 follow_video_bnt_flag = 4; // string next_video_title = 5; // string next_video_link = 6; // int64 cid = 7; // int32 season_id = 8; // int32 follow = 9; } // EP信息 message EpisodeInfo { // int32 ep_id = 1; // int64 cid = 2; // int64 aid = 3; // int64 ep_status = 4; // SeasonInfo season_info = 5; // string cover = 6; // string title = 7; // Interaction interaction = 8; // string long_title = 9; } // message EpPreVideo { // int64 aid = 1; // int64 cid = 2; } // message EpPublicityVideo { // enum Type { DATA_NOT_SET = 0; EP_PRE_VIDEO = 2; EP_INLINE = 3; } // Type type = 1; // oneof data { // EpPreVideo ep_pre_video = 2; // EpInlineVideo ep_inline_video = 3; } } // enum EpPublicityVideoType { // PRE = 0; // INLINE = 1; } // 事件 message Event { // 震动 Shake shake = 1; } // 放映室提示语 message FreyaConfig { // string desc = 1; // int32 type = 2; // int32 issued_cnt = 3; // bool is_always_show = 4; // int32 screen_number = 5; // int32 full_screen_number = 6; } // 渐变色信息 message GradientColor { // string start_color = 1; // string end_color = 2; } // 高画质试看信息 message HighDefinitionTrialInfo { // bool trial_able = 1; // int32 remaining_times = 2; // int32 start = 3; // int32 time_length = 4; // Toast start_toast = 5; // Toast end_toast = 6; // Report report = 7; // ButtonInfo quality_open_tip_btn = 8; // ButtonInfo no_longer_trial_btn = 9; } // 历史记录节点 message HistoryNode { // 节点ID int64 node_id = 1; // 节点标题 string title = 2; // 对应CID int64 cid = 3; } // 图片信息 message ImageInfo { // 图片链接 string url = 1; } // enum InlineScene { UNKNOWN = 0; // RELATED_EP = 1; // HE = 2; // SKIP = 3; // } // enum InlineType { TYPE_UNKNOWN = 0; // TYPE_WHOLE = 1; // TYPE_HE_CLIP = 2; // TYPE_PREVIEW = 3; // } // 交互信息 message Interaction { // 历史节点 HistoryNode history_node = 1; // 版本 int64 graph_version = 2; // 交互消息 string msg = 3; // 是否为交互 bool is_interaction = 4; } // 限制操作类型 enum LimitActionType { // LAT_UNKNOWN = 0; // SHOW_LIMIT_DIALOG = 1; // SKIP_CURRENT_EP = 2; } // message MultiView { // string button_material = 1; // int64 ep_id = 2; // int64 cid = 3; // int64 avid = 4; } // 大会员广告: 支付提示信息 message PayTip { // 标题 string title = 1; // 跳转链接 string url = 2; // 图标 string icon = 3; // 浮层类型 int32 type = 4; // 显示类型 int32 show_type = 5; // 图片信息 string img = 6; // 白天背景颜色 string bg_day_color = 7; // 夜间背景颜色 string bg_night_color = 8; // 白天线条颜色 string bg_line_color = 9; // 夜间线条颜色 string bg_night_line_color = 10; // 文字颜色 string text_color = 11; // 夜间文字颜色 string text_night_color = 12; // 视图展示起始时间 int64 view_start_time = 13; // 按钮列表 repeated ButtonInfo button = 14; // 跳转链接打开方式 int32 url_open_type = 15; // 埋点上报信息 Report report = 16; // 角度样式 int32 angle_style = 17; // 埋点上报类型 int32 report_type = 18; // 订单埋点上报参数 map<string, string> order_report_params = 19; // 巨屏图片信息 string giant_screen_img = 20; } // 禁用功能配置 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; // 跳过片头片尾 bool record_screen_disable = 31; // 录屏 bool color_optimize_disable = 32; // 色觉优化 bool dubbing_disable = 33; // 配音 } // 云控扩展配置信息 message PlayAbilityExtConf { // bool allow_close_subtitle = 1; // FreyaConfig freya_config = 2; // CastTips cast_tips = 3; } // 播放配音信息 message PlayDubbingInfo { // 背景音频 AudioMaterialProto background_audio = 1; // 角色音频列表 repeated RoleAudioProto role_audio_list = 2; // 引导文本 string guide_text = 3; } // 错误码 enum PlayErr { NoErr = 0; // WithMultiDeviceLoginErr = 1; // 管控类型的错误码 } // 播放扩展信息 message PlayExtInfo { // 播放配音信息 PlayDubbingInfo play_dubbing_info = 1; } // message PlayList { // int32 season_id = 1; // string title = 2; // string cover = 3; // string link = 4; // BadgeInfo badge_info = 5; } // 其他业务信息 message PlayViewBusinessInfo { // 当前视频是否是预览 bool is_preview = 1; // 用户是否承包过 bool bp = 2; // drm使用 string marlin_token = 3; // 倍速动效色值 string playback_speed_color = 4; // ContinuePlayInfo continue_play_info = 5; // 跳过片头/片尾配置 repeated ClipInfo clip_info = 6; // InlineType inline_type = 7; // int32 ep_whole_duration = 8; // 当前分辨率信息 Dimension dimension = 9; // map<int32, QualityExtInfo> quality_ext_map = 10; // map<string, int32> exp_map = 11; // DRM技术类型 DrmTechType drm_tech_type = 12; // int32 limit_action_type = 13; // bool is_drm = 14; // RecordInfo record_info = 15; // int32 vip_status = 16; // bool is_live_pre = 17; // EpisodeInfo episode_info = 18; // EpisodeAdvertisementInfo episode_advertisement_info = 19; // UserStatus user_status = 20; } // 播放页信息-响应 message PlayViewReply { // 视频流信息 VideoInfo video_info = 1; // 播放控件用户自定义配置 PlayAbilityConf play_conf = 2; // 业务需要的其他信息 PlayViewBusinessInfo business = 3; // 事件 Event event = 4; // 展示信息 ViewInfo view_info = 5; // 自定义配置扩展信息 PlayAbilityExtConf play_ext_conf = 6; // 播放扩展信息 PlayExtInfo play_ext_info = 7; } // 播放页信息-请求 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; // 视频编码 CodeType prefer_codec_type = 12; // 是否强制请求预览视频 bool is_preview = 13; // 一起看房间id int64 room_id = 14; // 是否需要展示信息 bool is_need_view_info = 15; // 场景控制 SceneControl scene_control = 16; // InlineScene inline_scene = 17; // int64 material_no = 18; // DRM 安全等级 int32 security_level = 19; // int64 season_id = 20; // DataControl data_control = 21; } // 弹窗信息 message PopWin { // 弹窗标题 老字段 string title = 1; // 优惠券列表 repeated Coupon coupon = 2; // 弹窗按钮列表 repeated ButtonInfo button = 3; // 底部文案 老字段 string bottom_text = 4; // 弹窗标题 新字段 TextInfo pop_title = 5; // 弹窗副标题 TextInfo subtitle = 6; // 底部描述 新字段 ButtonInfo bottom_desc = 7; // 弹窗小图 string cover = 8; // 弹窗类型 string pop_type = 9; } // 广告组件: 竖屏时视频下部提示栏 message PromptBar { // 主标题, 如: "本片含大会员专享内容" TextInfo title = 1; // 副标题, 如: "成为大会员可免费看全部剧集" TextInfo sub_title = 2; // 副标题前面的icon string sub_title_icon = 3; // 背景图 string bg_image = 4; // 背景渐变色 GradientColor bg_gradient_color = 5; // 按钮 repeated ButtonInfo button = 6; // 埋点上报信息 Report report = 7; // string full_screen_ip_icon = 8; // GradientColor full_screen_bg_gradient_color = 9; } // 云控拓展视频画质信息 message QualityExtInfo { // 是否支持试看 bool trial_support = 1; } // 备案信息 message RecordInfo { // 记录 string record = 1; // 记录图标 string record_icon = 2; } // 埋点上报信息 message Report { // 曝光事件 string show_event_id = 1; // 点击事件 string click_event_id = 2; // 埋点透传参数 string extends = 3; } // 分段流条目 message ResponseUrl { // 分段序号 uint32 order = 1; // 分段时长 uint64 length = 2; // 分段大小 uint64 size = 3; // 主线流 string url = 4; // 备用流 repeated string backup_url = 5; // md5 string md5 = 6; } // 权限信息 message Rights { // 是否可以观看 int32 can_watch = 1; } // 角色配音信息 message RoleAudioProto { // 角色ID int64 role_id = 1; // 角色名称 string role_name = 2; // 角色头像 string role_avatar = 3; // 音频素材列表 repeated AudioMaterialProto audio_material_list = 4; } // 场景控制 message SceneControl { // 是否收藏播单 bool fav_playlist = 1; // 是否小窗 bool small_window = 2; // 是否画中画 bool pip = 3; // bool was_he_inline = 4; // bool is_need_trial = 5; } // 方案 message Scheme { enum ActionType { UNKNOWN = 0; SHOW_TOAST = 1; } // ActionType action_type = 1; // string toast = 2; } // PGC SEASON 信息 message SeasonInfo { // PGC SEASON ID int32 season_id = 1; // PGC SEASON 类型 int32 season_type = 2; // PGC SEASON 状态 int32 season_status = 3; // 封面 string cover = 4; // 标题 string title = 5; // 权限信息 Rights rights = 6; // 模式 int32 mode = 7; } // DRM 安全等级 enum SecurityLevel { LEVEL_UNKNOWN = 0; // LEVEL_L1 = 1; // LEVEL_L2 = 2; // LEVEL_L3 = 3; // } // 分段视频流 message SegmentVideo { //分段视频流列表 repeated ResponseUrl segment = 1; } // 震动 message Shake { // 文件地址 string file = 1; } // 视频流信息 message Stream { // 元数据 StreamInfo info = 1; // 流数据 oneof content { // dash流 DashVideo dash_video = 2; // 分段流 SegmentVideo segment_video = 3; } } // 流媒体元数据 message StreamInfo { // 视频质量 int32 quality = 1; // 视频格式 string format = 2; // 描述信息 string description = 3; // 错误码 int32 err_code = 4; // 流限制信息 StreamLimit limit = 5; // 是否需要VIP bool need_vip = 6; // 是否需要登录 bool need_login = 7; // 是否完整 bool intact = 8; // 权限信息 int64 attribute = 10; // 新版描述信息 string new_description = 11; // 显示描述信息 string display_desc = 12; // 上标 string superscript = 13; // 方案信息 Scheme scheme = 14; // 是否支持DRM bool support_drm = 15; // 字幕信息 string subtitle = 16; } // 清晰度不满足条件信息 message StreamLimit { // 标题 string title = 1; // 跳转地址 string uri = 2; // 提示信息 string msg = 3; } // 任务参数信息 message TaskParam { // 任务类型 string task_type = 1; // 活动ID int64 activity_id = 2; // 提示ID int64 tips_id = 3; } // 文案信息 message TextInfo { // 文案 string text = 1; // 字体色值 string text_color = 2; // 字体色值-夜间模式 string text_color_night = 3; } // toast message Toast { // toast文案 老字段 string text = 1; // toast按钮 ButtonInfo button = 2; // 显示样式类型 int32 show_style_type = 3; // 图标 string icon = 4; // toast文案 新字段 TextInfo toast_text = 5; // 埋点上报信息 Report report = 6; // map<string, string> order_report_params = 7; } // 用户状态信息 message UserStatus { // 是否支付 bool pay_check = 1; // 是否承包 bool sponsor = 2; // 观看进度 WatchProgress watch_progress = 3; // 系列观看进度 WatchProgress aid_watch_progress = 4; } // 视频url信息 message VideoInfo { // 视频清晰度 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; } // 展示信息 message ViewInfo { // 弹窗 Dialog dialog = 1; // Toast Toast toast = 2; // 优惠券信息 CouponInfo coupon_info = 3; // 未支付剧集ID列表 repeated int64 demand_no_pay_epids = 4; // 结束页 EndPage end_page = 5; // 扩展配置 map<string, bool> exp_config = 6; // 弹窗 PopWin pop_win = 7; // 试看提示栏 PromptBar try_watch_prompt_bar = 8; // 支付提示信息 PayTip pay_tip = 9; // 高清试看提示信息 HighDefinitionTrialInfo high_definition_trial_info = 10; // 弹窗扩展 map<string, Dialog> ext_dialog = 11; // 动画 Animation animation = 12; // Toast扩展 map<string, Toast> ext_toast = 13; } // 观看进度信息 message WatchProgress { // 上次观看的 EP ID int32 last_ep_id = 1; // 上次观看到的EP INDEX string last_ep_index = 2; // 上次观看的进度 int64 progress = 3; // 上次观看的 CID int64 last_play_cid = 4; // 带时间的提示信息 Toast toast = 5; // 不带时间的提示信息 Toast toast_without_time = 6; // 上次观看的 AID int64 last_play_aid = 7; }