import{_ as e}from"./download-BaAFXe77.js";import{_ as d,c as r,a as p,b as t,d as n,e as a,w as o,r as i,o as c}from"./app-Dgsdh8A6.js";const u={};function D(y,s){const l=i("RouteLink");return c(),r("div",null,[s[26]||(s[26]=p('

课程视频流URL

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

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

请求方式:GET

认证方式:Cookie(SESSDATA)

注:

',7)),t("ol",null,[s[2]||(s[2]=t("li",null,"本接口为课程视频专用,故与普通视频不互通",-1)),t("li",null,[s[1]||(s[1]=n("大部分使用方法及视频的取流方法继承")),a(l,{to:"/docs/video/videostream_url.html"},{default:o(()=>s[0]||(s[0]=[n("视频流url文档")])),_:1,__:[0]})])]),s[27]||(s[27]=t("p",null,[t("strong",null,"url参数:")],-1)),t("table",null,[s[25]||(s[25]=t("thead",null,[t("tr",null,[t("th",null,"参数名"),t("th",null,"类型"),t("th",null,"内容"),t("th",null,"必要性"),t("th",null,"备注")])],-1)),t("tbody",null,[s[21]||(s[21]=t("tr",null,[t("td",null,"avid"),t("td",null,"num"),t("td",null,"课程avid"),t("td",null,"必要"),t("td")],-1)),s[22]||(s[22]=t("tr",null,[t("td",null,"ep_id"),t("td",null,"num"),t("td",null,"课程epid"),t("td",null,"必要"),t("td")],-1)),s[23]||(s[23]=t("tr",null,[t("td",null,"cid"),t("td",null,"num"),t("td",null,"视频cid"),t("td",null,"必要"),t("td")],-1)),t("tr",null,[s[5]||(s[5]=t("td",null,"qn",-1)),s[6]||(s[6]=t("td",null,"num",-1)),s[7]||(s[7]=t("td",null,"视频清晰度选择",-1)),s[8]||(s[8]=t("td",null,"非必要",-1)),t("td",null,[s[4]||(s[4]=n("参考")),a(l,{to:"/docs/video/videostream_url.html#qn%E8%A7%86%E9%A2%91%E6%B8%85%E6%99%B0%E5%BA%A6%E6%A0%87%E8%AF%86"},{default:o(()=>s[3]||(s[3]=[n("qn定义")])),_:1,__:[3]})])]),t("tr",null,[s[11]||(s[11]=t("td",null,"fnver",-1)),s[12]||(s[12]=t("td",null,"num",-1)),s[13]||(s[13]=t("td",null,"视频流版本",-1)),s[14]||(s[14]=t("td",null,"非必要",-1)),t("td",null,[s[10]||(s[10]=n("参考")),a(l,{to:"/docs/video/videostream_url.html#fnver%E8%A7%86%E9%A2%91%E6%B5%81%E7%89%88%E6%9C%AC%E6%A0%87%E8%AF%86"},{default:o(()=>s[9]||(s[9]=[n("fnver定义")])),_:1,__:[9]})])]),t("tr",null,[s[17]||(s[17]=t("td",null,"fnval",-1)),s[18]||(s[18]=t("td",null,"num",-1)),s[19]||(s[19]=t("td",null,"视频流类型",-1)),s[20]||(s[20]=t("td",null,"非必要",-1)),t("td",null,[s[16]||(s[16]=n("参考")),a(l,{to:"/docs/video/videostream_url.html#fnval%E8%A7%86%E9%A2%91%E6%B5%81%E6%A0%BC%E5%BC%8F%E6%A0%87%E8%AF%86"},{default:o(()=>s[15]||(s[15]=[n("fnval定义")])),_:1,__:[15]})])]),s[24]||(s[24]=t("tr",null,[t("td",null,"fourk"),t("td",null,"num"),t("td",null,"是否允许4K视频"),t("td",null,"非必要"),t("td",null,[n("默认为0"),t("br"),n("画质最高1080P:0"),t("br"),n("画质最高4K:1")])],-1))])]),s[28]||(s[28]=p(`

json回复:

根对象:

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

data对象:

字段类型内容备注
accept_formatstr视频支持的分辨率的格式
codenum0
durlarray视频分段
seek_paramstrstart
no_rexcodenum0
formatstr视频格式
fnvalnum0
video_projectbooltrue
fnvernum0
messagestr
typestr视频格式
accept_qualityarray视频支持的分辨率列表
qualitynum视频分辨率代码值含义见上表
timelengthnum视频长度单位为毫秒
不同分辨率可能有略微差异
resultstrsuee作用尚不明确
seek_typestroffset作用尚不明确
has_paidboolfalse作用尚不明确
supportFormatsarray视频分辨率详细列表
fromstrlocal作用尚不明确
video_codecidnum???作用尚不明确
accept_descriptionarray视频支持的分辨率列表
statusnum0作用尚不明确

data中的durl数组:

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

durl数组中的对象:

字段类型内容备注
sizenum视频大小单位为Byte
aheadstr作用尚不明确
lengthnum视频长度单位为毫秒
vheadstr作用尚不明确
backup_urlarray备用视频流
urlstr视频流url链接有效时间为120min
ordernum视频分段序号某些视频会分为多个片段

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

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

data中的supportFormats数组:

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

supportFormats数组中的对象:

字段类型内容备注
formatstr分辨率名称
descriptionatr分辨率备注
qualitynum分辨率代码

data中的accept_description数组:

类型内容备注
0str分辨率名称1
nstr分辨率名称(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'
查看响应示例:
{
    "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"
}
`,21))])}const q=d(u,[["render",D]]),b=JSON.parse('{"path":"/docs/cheese/videostream_url.html","title":"课程视频流URL","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/cheese/videostream_url.md"}');export{q as comp,b as data};