bac

课程视频流URL

获取课程视频流URL(web端)

https://api.bilibili.com/pugv/player/web/playurl

请求方式:GET

认证方式:Cookie(SESSDATA)

注:

  1. 本接口为课程视频专用,故与普通视频不互通
  2. 大部分使用方法及视频的取流方法继承视频流url文档

url参数:

参数名 类型 内容 必要性 备注
avid num 课程avid 必要  
ep_id num 课程epid 必要  
cid num 视频cid 必要  
qn num 视频清晰度选择 非必要 参考qn定义
fnver num 视频流版本 非必要 参考fnver定义
fnval num 视频流类型 非必要 参考fnval定义
fourk num 是否允许4K视频 非必要 默认为0
画质最高1080P:0
画质最高4K:1

json回复:

根对象:

字段 类型 内容 备注
code num 返回值 0:成功
-400:请求错误
-404:无视频
-403:权限不足(未购买)
message str 错误信息 默认为success
data obj 数据本体  

data对象:

字段 类型 内容 备注
accept_format str 视频支持的分辨率的格式  
code num 0  
durl array 视频分段  
seek_param str start  
no_rexcode num 0  
format str 视频格式  
fnval num 0  
video_project bool true  
fnver num 0  
message str  
type str 视频格式  
accept_quality array 视频支持的分辨率列表  
quality num 视频分辨率代码 值含义见上表
timelength num 视频长度 单位为毫秒
不同分辨率可能有略微差异
result str suee 作用尚不明确
seek_type str offset 作用尚不明确
has_paid bool false 作用尚不明确
supportFormats array 视频分辨率详细列表  
from str local 作用尚不明确
video_codecid num ??? 作用尚不明确
accept_description array 视频支持的分辨率列表  
status num 0 作用尚不明确

data中的durl数组:

类型 内容 备注
0 obj 视频分段1信息  
n obj 视频分段(n+1)信息  
…… obj ……  

durl数组中的对象:

字段 类型 内容 备注
size num 视频大小 单位为Byte
ahead str 作用尚不明确
length num 视频长度 单位为毫秒
vhead str 作用尚不明确
backup_url array 备用视频流  
url str 视频流url 链接有效时间为120min
order num 视频分段序号 某些视频会分为多个片段

durl数组中的对象中的backup_url数组:

类型 内容 备注
0 str 备用视频流url 有效时间为120min

data中的supportFormats数组:

类型 内容 备注
0 obj 分辨率详细信息1  
n obj 分辨率详细信息(n+1)  
…… obj …… ……

supportFormats数组中的对象:

字段 类型 内容 备注
format str 分辨率名称  
description atr 分辨率备注  
quality num 分辨率代码  

data中的accept_description数组:

类型 内容 备注
0 str 分辨率名称1  
n str 分辨率名称(n+1)  
…… str …… ……

示例:

获取课程ep790(cid=132105993,avid=76973173)的视频流url,清晰度为1080P60

curl -G 'https://api.bilibili.com/pugv/player/web/playurl' \
--data-urlencode 'ep_id=790' \
--data-urlencode 'avid=76973173' \
--data-urlencode 'cid=132105993' \
--data-urlencode 'qn=116' \
-b 'SESSDATA=xxx'
查看响应示例: ```json { "code": 0, "data": { "accept_format": "flv_p60,flv720_p60,flv,flv720,flv480,flv360", "code": 0, "durl": [ { "size": 1105854161, "ahead": "", "length": 2222204, "vhead": "", "backup_url": [ "https://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3cbv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=b271bf493bff32ffe62969582c8d18b4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=1,2&logo=40000000" ], "url": "https://upos-sz-mirrorks3.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3bv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=6a8ae3711bd0bb2a484ec2427d659b14&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,2&logo=80000000", "order": 1, "md5": "" } ], "seek_param": "start", "no_rexcode": 0, "format": "flv_p60", "fnval": 0, "video_project": true, "fnver": 0, "message": "", "type": "FLV", "accept_quality": [ 116, 74, 80, 64, 32, 16 ], "quality": 116, "timelength": 2222204, "result": "suee", "seek_type": "offset", "has_paid": false, "supportFormats": [ { "format": "flv_p60", "description": "高清 1080P60", "quality": 116 }, { "format": "flv720_p60", "description": "高清 720P60", "quality": 74 }, { "format": "flv", "description": "高清 1080P", "quality": 80 }, { "format": "flv720", "description": "高清 720P", "quality": 64 }, { "format": "flv480", "description": "清晰 480P", "quality": 32 }, { "format": "flv360", "description": "流畅 360P", "quality": 16 } ], "from": "local", "video_codecid": 7, "accept_description": [ "高清 1080P60", "高清 720P60", "高清 1080P", "高清 720P", "清晰 480P", "流畅 360P" ], "status": 0 }, "message": "success" } ```