Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何以不同的分辨率获得youtube视频和视频的直接链接?_Javascript_Php_Youtube - Fatal编程技术网

Javascript 如何以不同的分辨率获得youtube视频和视频的直接链接?

Javascript 如何以不同的分辨率获得youtube视频和视频的直接链接?,javascript,php,youtube,Javascript,Php,Youtube,我的问题是我想得到一个YouTube视频的直接链接和不同质量的不同链接。例如,如果我有这个URL,那么不同质量的视频的直接链接如下 有人能告诉我如何从YouTube上获得YouTube视频的直接链接吗?我一直在寻找,但找不到任何解决方案。PHP和javascript中的任何解决方案都会很有帮助。您可以使用以下代码: videoUrls = ytplayer.config.args.adaptive_fmts .split(',') .map(

我的问题是我想得到一个YouTube视频的直接链接和不同质量的不同链接。例如,如果我有这个URL,那么不同质量的视频的直接链接如下

有人能告诉我如何从YouTube上获得YouTube视频的直接链接吗?我一直在寻找,但找不到任何解决方案。PHP和javascript中的任何解决方案都会很有帮助。

您可以使用以下代码:

videoUrls = ytplayer.config.args.adaptive_fmts
            .split(',')
            .map(item => item
            .split('&')
            .reduce((prev, curr) => (curr = curr.split('='),
                Object.assign(prev, {[curr[0]]: decodeURIComponent(curr[1])})
        ), {})
        )
        .reduce((prev, curr) => Object.assign(prev, {
                [curr.quality_label || curr.type]: curr
            }), {} );
输出是具有不同质量的json:

        {720p: {…}, 480p: {…}, 360p: {…}, 240p: {…}, 144p: {…}, …}
    144p
    :
    {bitrate: "105451", lmt: "1501151759670299", quality_label: "144p", type: "video/webm;+codecs="vp9"", projection_type: "1", …}
    240p
    :
    {bitrate: "236138", lmt: "1501151763073149", quality_label: "240p", type: "video/webm;+codecs="vp9"", projection_type: "1", …}
    360p
    :
    {bitrate: "431019", lmt: "1501151763523043", quality_label: "360p", type: "video/webm;+codecs="vp9"", projection_type: "1", …}
    480p
    :
    {bitrate: "751515", lmt: "1501151761884798", quality_label: "480p", type: "video/webm;+codecs="vp9"", projection_type: "1", …}
    720p
    :
    {bitrate: "1530639", lmt: "1501151774338090", quality_label: "720p", type: "video/webm;+codecs="vp9"", projection_type: "1", …}
    audio/mp4;+codecs="mp4a.40.2"
    :
    {url: "https://redirector.googlevideo.com/videoplayback?k…70E2C77F1747DA9B3&source=youtube&mime=audio%2Fmp4", type: "audio/mp4;+codecs="mp4a.40.2"", init: "0-591", projection_type: "1", bitrate: "96956", …}
    audio/webm;+codecs="opus"
    :
    {url: "https://redirector.googlevideo.com/videoplayback?k…AEF92557AE5C5581&source=youtube&mime=audio%2Fwebm", type: "audio/webm;+codecs="opus"", init: "0-271", projection_type: "1", bitrate: "116254", …}
    audio/webm;+codecs="vorbis"
    :
    {url: "https://redirector.googlevideo.com/videoplayback?k…FA29AC0F6C925E21&source=youtube&mime=audio%2Fwebm", type: "audio/webm;+codecs="vorbis"", init: "0-4082", projection_type: "1", bitrate: "77114", …}
    __proto__
    :
    Object

这里讨论过:youtube在巴基斯坦被屏蔽,所以我不能使用这个程序。我想直接链接到视频@adibbehjatt,这太糟糕了。我在谷歌上搜索,发现谷歌内部有一个专门的“下载”视频页面。这里可以找到更多信息:-唯一的问题是如果youtube域在巴基斯坦被阻止,任何请求都不会受到阻碍吗?只是一个警告,链接中的一些信息是私有的,例如我可以看到你的IP地址。你是在找一个类似youtube.2tera.com的东西吗?但此代码在移动设备上不起作用。如果有人知道如何修复,请与我们共享解决方案)