mirror of
https://github.com/SocialSisterYi/bilibili-API-collect.git
synced 2025-01-29 13:20:09 +08:00
642 lines
13 KiB
Protocol Buffer
642 lines
13 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package bilibili.app.playurl.v1;
|
|
|
|
// 视频url
|
|
service PlayURL {
|
|
// 视频地址
|
|
rpc PlayURL (PlayURLReq) returns (PlayURLReply);
|
|
// 投屏地址
|
|
rpc Project (ProjectReq) returns (ProjectReply);
|
|
// 播放页信息
|
|
rpc PlayView (PlayViewReq) returns (PlayViewReply);
|
|
// 编辑播放界面配置
|
|
rpc PlayConfEdit (PlayConfEditReq) returns (PlayConfEditReply);
|
|
// 获取播放界面配置
|
|
rpc PlayConf (PlayConfReq) returns (PlayConfReply);
|
|
}
|
|
|
|
// 视频地址-请求
|
|
message PlayURLReq {
|
|
// 稿件avid
|
|
int64 aid = 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;
|
|
}
|
|
|
|
// 视频地址-回复
|
|
message PlayURLReply {
|
|
// 清晰的
|
|
uint32 quality = 1;
|
|
// 格式
|
|
string format = 2;
|
|
// 总时长(单位为ms)
|
|
uint64 timelength = 3;
|
|
// 编码id
|
|
uint32 videoCodecid = 4;
|
|
// 视频流版本
|
|
uint32 fnver = 5;
|
|
// 视频流格式
|
|
uint32 fnval = 6;
|
|
// 是否支持投影
|
|
bool videoProject = 7;
|
|
// 分段视频流列表
|
|
repeated ResponseUrl durl = 8;
|
|
// dash数据
|
|
ResponseDash dash = 9;
|
|
// 是否非全二压
|
|
int32 noRexcode = 10;
|
|
// 互动视频升级提示
|
|
UpgradeLimit upgradeLimit = 11;
|
|
// 清晰度描述列表
|
|
repeated FormatDescription supportFormats = 12;
|
|
// 视频格式
|
|
VideoType type = 13;
|
|
}
|
|
|
|
// 分段流条目
|
|
message ResponseUrl {
|
|
// 分段序号
|
|
uint32 order = 1;
|
|
// 分段时长
|
|
uint64 length = 2;
|
|
// 分段大小
|
|
uint64 size = 3;
|
|
// 主线流
|
|
string url = 4;
|
|
// 备用流
|
|
repeated string backupUrl = 5;
|
|
// md5
|
|
string md5 = 6;
|
|
}
|
|
|
|
// dash数据
|
|
message ResponseDash {
|
|
// dash视频流
|
|
repeated DashItem video = 1;
|
|
// dash伴音流
|
|
repeated DashItem audio = 2;
|
|
}
|
|
|
|
// dash条目
|
|
message DashItem {
|
|
// 清晰度
|
|
uint32 id=1;
|
|
// 主线流
|
|
string baseUrl=2;
|
|
// 备用流
|
|
repeated string backupUrl=3;
|
|
// 带宽
|
|
uint32 bandwidth=4;
|
|
// 编码id
|
|
uint32 codecid=5;
|
|
// md5
|
|
string md5=6;
|
|
// 大小
|
|
uint64 size=7;
|
|
}
|
|
|
|
// 互动视频升级提示
|
|
message UpgradeLimit {
|
|
// 错误码
|
|
int32 code =1;
|
|
// 错误信息
|
|
string message =2;
|
|
// 图片url
|
|
string image =3;
|
|
// 按钮信息
|
|
UpgradeButton button=4;
|
|
}
|
|
|
|
// 互动视频升级按钮信息
|
|
message UpgradeButton {
|
|
// 标题
|
|
string title = 1;
|
|
// 链接
|
|
string link = 2;
|
|
}
|
|
|
|
// 清晰度描述
|
|
message FormatDescription {
|
|
// 清晰度
|
|
int32 quality = 1;
|
|
// 清晰度格式
|
|
string format = 2;
|
|
// 清晰度描述
|
|
string description = 3;
|
|
// 新描述
|
|
string newDescription = 4;
|
|
// 选中态的清晰度描述
|
|
string displayDesc = 5;
|
|
// 选中态的清晰度描述的角标
|
|
string superscript = 6;
|
|
}
|
|
|
|
// 投屏地址请求
|
|
message ProjectReq {
|
|
// 稿件avid
|
|
int64 aid = 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;
|
|
}
|
|
|
|
// 投屏地址-响应
|
|
message ProjectReply {
|
|
PlayURLReply project = 1;
|
|
}
|
|
|
|
// 播放页信息-请求
|
|
message PlayViewReq {
|
|
// 稿件avid
|
|
int64 aid = 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;
|
|
// 青少年模式
|
|
int32 teenagersMode = 11;
|
|
// 编码
|
|
CodeType preferCodecType = 12;
|
|
// 业务类型
|
|
Business business = 13;
|
|
}
|
|
|
|
// 业务类型
|
|
enum Business {
|
|
// 未知类型
|
|
UNKNOWN = 0;
|
|
// story业务
|
|
STORY = 1;
|
|
}
|
|
|
|
// 编码类型
|
|
enum CodeType {
|
|
// 默认
|
|
NOCODE = 0;
|
|
// H.264
|
|
CODE264 = 1;
|
|
// H.265
|
|
CODE265 = 2;
|
|
}
|
|
|
|
// 播放页信息-回复
|
|
message PlayViewReply {
|
|
// 视频流信息
|
|
VideoInfo info = 1;
|
|
// 播放控件用户自定义配置
|
|
PlayAbilityConf PlayConf = 2;
|
|
// 互动视频升级提示
|
|
UpgradeLimit upgradeLimit = 3;
|
|
// Chronos灰度管理
|
|
Chronos chronos = 4;
|
|
// 播放控件稿件配置
|
|
PlayArcConf playArc = 5;
|
|
// 事件
|
|
Event event = 6;
|
|
}
|
|
|
|
// 事件
|
|
message Event {
|
|
// 震动
|
|
Shake shake = 1;
|
|
}
|
|
|
|
// 震动
|
|
message Shake {
|
|
// 文件地址
|
|
string file = 1;
|
|
}
|
|
|
|
// Chronos灰度管理
|
|
message Chronos {
|
|
// 资源md5
|
|
string md5 = 1;
|
|
// 资源文件
|
|
string file = 2;
|
|
}
|
|
|
|
// 获取播放界面配置-请求
|
|
message PlayConfReq {}
|
|
|
|
// 获取播放界面配置-响应
|
|
message PlayConfReply {
|
|
//播放控件用户自定义配置
|
|
PlayAbilityConf playConf = 1;
|
|
}
|
|
|
|
// 禁用功能配置
|
|
message PlayAbilityConf {
|
|
// 后台播放
|
|
CloudConf backgroundPlayDisable = 1;
|
|
// 镜像反转
|
|
CloudConf flipDisable = 2;
|
|
// 投屏
|
|
CloudConf castDisable = 3;
|
|
// 反馈
|
|
CloudConf feedbackDisable = 4;
|
|
// 字幕
|
|
CloudConf subtitleDisable = 5;
|
|
// 播放速度
|
|
CloudConf playbackRateDisable = 6;
|
|
// 定时停止
|
|
CloudConf timeUpDisable = 7;
|
|
// 播放方式
|
|
CloudConf playbackModeDisable = 8;
|
|
// 画面尺寸
|
|
CloudConf scaleModeDisable = 9;
|
|
// 赞
|
|
CloudConf likeDisable = 10;
|
|
// 踩
|
|
CloudConf dislikeDisable = 11;
|
|
// 投币
|
|
CloudConf coinDisable = 12;
|
|
// 充电
|
|
CloudConf elecDisable = 13;
|
|
// 分享
|
|
CloudConf shareDisable = 14;
|
|
// 截图
|
|
CloudConf screenShotDisable = 15;
|
|
// 锁定
|
|
CloudConf lockScreenDisable = 16;
|
|
// 相关推荐
|
|
CloudConf recommendDisable = 17;
|
|
// 播放速度
|
|
CloudConf playbackSpeedDisable = 18;
|
|
// 清晰度
|
|
CloudConf definitionDisable = 19;
|
|
// 选集
|
|
CloudConf selectionsDisable = 20;
|
|
// 下一集
|
|
CloudConf nextDisable = 21;
|
|
// 编辑弹幕
|
|
CloudConf editDmDisable = 22;
|
|
// 小窗
|
|
CloudConf smallWindowDisable = 23;
|
|
// 震动
|
|
CloudConf shakeDisable = 24;
|
|
// 外层面板弹幕设置
|
|
CloudConf outerDmDisable = 25;
|
|
// 三点内弹幕设置
|
|
CloudConf innerDmDisable = 26;
|
|
// 一起看入口
|
|
CloudConf freyaEnterDisable = 27;
|
|
// 杜比音效
|
|
CloudConf dolbyDisable = 28;
|
|
}
|
|
|
|
// 播放控件稿件配置
|
|
message PlayArcConf {
|
|
// 后台播放
|
|
ArcConf backgroundPlayConf = 1;
|
|
// 镜像反转
|
|
ArcConf flipConf = 2;
|
|
// 投屏
|
|
ArcConf castConf = 3;
|
|
// 反馈
|
|
ArcConf feedbackConf = 4;
|
|
// 字幕
|
|
ArcConf subtitleConf = 5;
|
|
// 播放速度
|
|
ArcConf playbackRateConf = 6;
|
|
// 定时停止
|
|
ArcConf timeUpConf = 7;
|
|
// 播放方式
|
|
ArcConf playbackModeConf = 8;
|
|
// 画面尺寸
|
|
ArcConf scaleModeConf = 9;
|
|
// 赞
|
|
ArcConf likeConf = 10;
|
|
// 踩
|
|
ArcConf dislikeConf = 11;
|
|
// 投币
|
|
ArcConf coinConf = 12;
|
|
// 充电
|
|
ArcConf elecConf = 13;
|
|
// 分享
|
|
ArcConf shareConf = 14;
|
|
// 截图
|
|
ArcConf screenShotConf = 15;
|
|
// 锁定
|
|
ArcConf lockScreenConf = 16;
|
|
// 相关推荐
|
|
ArcConf recommendConf = 17;
|
|
// 播放速度
|
|
ArcConf playbackSpeedConf = 18;
|
|
// 清晰度
|
|
ArcConf definitionConf = 19;
|
|
// 选集
|
|
ArcConf selectionsConf = 20;
|
|
// 下一集
|
|
ArcConf nextConf = 21;
|
|
// 编辑弹幕
|
|
ArcConf editDmConf = 22;
|
|
// 小窗
|
|
ArcConf smallWindowConf = 23;
|
|
// 震动
|
|
ArcConf shakeConf = 24;
|
|
// 外层面板弹幕设置
|
|
ArcConf outerDmConf = 25;
|
|
// 三点内弹幕设置
|
|
ArcConf innerDmConf = 26;
|
|
// 一起看入口
|
|
ArcConf freyaEnterConf = 27;
|
|
// 杜比音效
|
|
ArcConf dolbyConf = 28;
|
|
}
|
|
|
|
// 设置类型
|
|
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;
|
|
}
|
|
|
|
//
|
|
message CloudConf {
|
|
// 是否展示功能
|
|
bool show = 1;
|
|
// 设置类型
|
|
ConfType confType = 2;
|
|
//
|
|
FieldValue fieldValue = 3;
|
|
}
|
|
|
|
// 配置字段值
|
|
message FieldValue {
|
|
//
|
|
oneof value {
|
|
// 开关
|
|
bool value = 1;
|
|
}
|
|
}
|
|
|
|
// 配置项
|
|
message ArcConf {
|
|
// 是否支持
|
|
bool isSupport = 1;
|
|
}
|
|
|
|
// 视频url信息
|
|
message VideoInfo {
|
|
// 视频清晰度
|
|
uint32 quality=1;
|
|
// 视频格式
|
|
string format=2;
|
|
// 视频时长
|
|
uint64 timelength=3;
|
|
// 视频编码id
|
|
uint32 videoCodecid=4;
|
|
// 视频流
|
|
repeated Stream streamList=5;
|
|
// 伴音流
|
|
repeated DashItem audio=6;
|
|
// 杜比伴音流
|
|
DolbyItem dolby=7;
|
|
}
|
|
|
|
//杜比音频信息
|
|
message DolbyItem {
|
|
enum Type {
|
|
// NONE
|
|
NONE = 0;
|
|
// 普通杜比音效
|
|
COMMON = 1;
|
|
// 全景杜比音效
|
|
ATMOS = 2;
|
|
}
|
|
// 杜比类型
|
|
Type type = 1;
|
|
// 音频流
|
|
DashItem audio = 2;
|
|
}
|
|
|
|
// 视频流信息
|
|
message Stream {
|
|
// 元数据
|
|
StreamInfo info = 1;
|
|
// 流数据
|
|
oneof contentCase {
|
|
// dash流
|
|
DashVideo dashvideo = 2;
|
|
// 分段流
|
|
SegmentVideo segmentvideo = 3;
|
|
}
|
|
}
|
|
|
|
//分段视频流
|
|
message SegmentVideo {
|
|
//分段视频流列表
|
|
repeated ResponseUrl segment = 1;
|
|
}
|
|
|
|
// 错误码
|
|
enum PlayErr {
|
|
//
|
|
NoErr_VALUE = 0;
|
|
// 管控类型的错误码
|
|
WithMultiDeviceLoginErr_VALUE = 1;
|
|
}
|
|
|
|
// 流媒体元数据
|
|
message StreamInfo {
|
|
// 清晰度
|
|
uint32 quality = 1;
|
|
// 格式
|
|
string format = 2;
|
|
// 格式描述
|
|
string description = 3;
|
|
// 错误码
|
|
uint32 errCode = 4;
|
|
// 不满足条件信息
|
|
StreamLimit limit = 5;
|
|
// 是否需要vip
|
|
bool needVip = 6;
|
|
// 是否需要登录
|
|
bool needLogin = 7;
|
|
// 是否完整
|
|
bool intact = 8;
|
|
// 是否非全二压
|
|
bool noRexcode = 9;
|
|
// 清晰度属性位
|
|
int64 attribute = 10;
|
|
// 新版格式描述
|
|
string newDescription = 11;
|
|
// 格式文字
|
|
string displayDesc = 12;
|
|
// 新版格式描述备注
|
|
string superscript = 13;
|
|
}
|
|
|
|
// 清晰度不满足条件信息
|
|
message StreamLimit {
|
|
// 标题
|
|
string title = 1;
|
|
// 跳转地址
|
|
string uri = 2;
|
|
// 提示信息
|
|
string msg = 3;
|
|
}
|
|
|
|
// 编辑播放界面配置-请求
|
|
message PlayConfEditReq {
|
|
// 播放界面配置
|
|
repeated PlayConfState playConf = 1;
|
|
}
|
|
|
|
// 编辑播放界面配置-响应
|
|
message PlayConfEditReply {}
|
|
|
|
// 播放界面配置
|
|
message PlayConfState {
|
|
// 设置类型
|
|
ConfType confType = 1;
|
|
// 是否隐藏
|
|
bool show = 2;
|
|
// 配置字段值
|
|
FieldValue fieldValue = 3;
|
|
}
|
|
//dash视频流
|
|
message DashVideo {
|
|
// 主线流
|
|
string baseUrl = 1;
|
|
// 备用流
|
|
repeated string backupUrl = 2;
|
|
// 带宽
|
|
uint32 bandwidth = 3;
|
|
// 编码id
|
|
uint32 codecid = 4;
|
|
// md5
|
|
string md5 = 5;
|
|
// 大小
|
|
uint64 size = 6;
|
|
// 伴音质量id
|
|
uint32 audioId = 7;
|
|
// 是否非全二压
|
|
bool noRexcode = 8;
|
|
}
|
|
|
|
// 视频类型
|
|
enum VideoType {
|
|
//
|
|
Unknown_VALUE = 0;
|
|
// flv格式
|
|
FLV_VALUE = 1;
|
|
// dash格式
|
|
DASH_VALUE = 2;
|
|
// mp4格式
|
|
MP4_VALUE = 3;
|
|
}
|