Eri*_*hao 27
编辑:我发现这可以工作。我不知道为什么。但它确实有效。
您可以添加&html5=1url 来修复它。
Ami*_*nin 13
出于某种原因,谷歌正试图让它变得更难。
2021 年 8 月编辑:
我刚刚为 C# 开发人员发布了一个新的 NuGet,它带来了 get_video_info 的 URL。享受! https://www.nuget.org/packages/Youtube.VideoInfo
初始值为
https://www.youtube.com/get_video_info?video_id={videoId}&eurl=https://youtube.googleapis.com/v/{videoId}
然后添加了 HTML5 标签:
https://www.youtube.com/get_video_info?html5=1&video_id={videoId}&eurl=https://youtube.googleapis.com/v/{videoId}
现在(2021 年 6 月)新的解决方案是:
https://www.youtube.com/get_video_info?video_id={videoId}&eurl=https%3A%2F%2Fyoutube.googleapis.com%2Fv%2Fonz2k4zoLjQ&html5=1&c=TVHTML5&cver=6.20180913
我们需要睁大眼睛。看起来谷歌中的某个人不喜欢 YouTube 启用此功能的事实。
Sim*_*n C 11
YouTube (截至 2021 年 8 月 8 日撰写本文时)似乎已将等效输出移至终点watch?v=。ytInitialPlayerResponse您应该在它返回的 html 中的 (json) 变量中找到视频格式。
例如https://youtube.com/watch?v=SA8ZBJWo73E返回 html。该 html 响应ytInitialPlayerResponse变量包含一个 json 字符串。在该字符串中,您可以在以下位置找到视频格式:[streamingData][formats]。
我很乐意接受所有的功劳,但这个示例提交是我找到答案的地方。
小智 7
我想我找到了 YouTube get_video_info端点的替代方法。
以下是对youtubei/v1/player端点的POST请求的 CURL 和 PHP (CURL) 实现, 具有最少的请求标头和参数。
我已经从请求中删除了许多请求标头和参数,以保持简单和尽可能匿名,就像使用GET get_video_info端点时一样。例如 cookie、用户代理等。
下面的示例可能仍然包含可选的请求参数,因为它是在紧急情况下完成的。
在将用户代理设置为电视后,我通过检查 Firefox 中的 XHR 网络请求发现了这个新 API。
firefox-inspect-network-xhr-requests-television-user-agent
以下 CURL 请求中使用的示例视频链接:
https://www.youtube.com/watch?v=UF8uR6Z6KLc
卷曲
curl 'https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8' -H 'Content-Type: application/json' --data '{ "context": { "client": { "hl": "en", "clientName": "WEB", "clientVersion": "2.20210721.00.00", "clientFormFactor": "UNKNOWN_FORM_FACTOR", "clientScreen": "WATCH", "mainAppWebInfo": { "graftUrl": "/watch?v=UF8uR6Z6KLc", } }, "user": { "lockedSafetyMode": false }, "request": { "useSsl": true, "internalExperimentFlags": [], "consistencyTokenJars": [] } }, "videoId": "UF8uR6Z6KLc", "playbackContext": { "contentPlaybackContext": { "vis": 0, "splay": false, "autoCaptionsDefaultOn": false, "autonavState": "STATE_NONE", "html5Preference": "HTML5_PREF_WANTS", "lactMilliseconds": "-1" } }, "racyCheckOk": false, "contentCheckOk": false}'
Run Code Online (Sandbox Code Playgroud)
PHP(卷曲)
function getVideoInfo($video_id){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.youtube.com/youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "context": { "client": { "hl": "en", "clientName": "WEB", "clientVersion": "2.20210721.00.00", "clientFormFactor": "UNKNOWN_FORM_FACTOR", "clientScreen": "WATCH", "mainAppWebInfo": { "graftUrl": "/watch?v='.$video_id.'", } }, "user": { "lockedSafetyMode": false }, "request": { "useSsl": true, "internalExperimentFlags": [], "consistencyTokenJars": [] } }, "videoId": "'.$video_id.'", "playbackContext": { "contentPlaybackContext": { "vis": 0, "splay": false, "autoCaptionsDefaultOn": false, "autonavState": "STATE_NONE", "html5Preference": "HTML5_PREF_WANTS", "lactMilliseconds": "-1" } }, "racyCheckOk": false, "contentCheckOk": false}');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
return $result;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
更新(2021 年 7 月)
我已经尝试过这种方式
帖子: https://youtubei.googleapis.com/youtubei/v1/player? key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8
与身体:
{
"context": {
"client": {
"hl": "en",
"clientName": "WEB",
"clientVersion": "2.20210721.00.00",
"mainAppWebInfo": {
"graftUrl": "/watch?v={VIDEO_ID}"
}
}
},
"videoId": "{VIDEO_ID}"
}
Run Code Online (Sandbox Code Playgroud)
这工作就像一个魅力
小智 5
你可以尝试使用这个插件
new YouTubeToHtml5();Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/gh/thelevicole/youtube-to-html5-loader@4.0.1/dist/YouTubeToHtml5.js"></script>
<video data-yt2html5="https://www.youtube.com/watch?v=ScMzIvxBSi4" controls></video>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8760 次 |
| 最近记录: |