我遇到了 YouTube 嵌入网址的问题,该网址的播放列表参数中包含大量视频 ID。例如:https://www.youtube.com/embed/VIDEOID1?playlist=VIDEOID2,VIDEOID3,...,VIDEOID20
在第一次加载时,它可以工作,但是如果我刷新,它会显示“此视频不可用”。然后我在其他浏览器和另一台计算机上尝试,并立即得到相同的错误。我等了几天再试一次,成功了一次,然后又回到这个错误。更改列表中的视频也具有相同的效果:对于每个唯一的列表,它会工作一次,然后就会出错。仅当视频数量较多时才会出现这种情况。
深入研究html响应并比较它起作用和不起作用的时间,我发现页面的JS中有一个PLAYER_VARS对象,并且它起作用时包含一个“list”属性,但在错误发生时该属性缺失。我还发现“list”属性的值可以用作嵌入 url 的查询字符串参数(“list”查询字符串参数),并且效果一致。
这是一个已知的错误和/或有办法解决它吗?证据似乎表明 YouTube 端存在某种服务器端缓存问题。
导致此问题的原因是在播放列表中包含了几个标记为私有的视频。
看起来支持的查询字符串是
?list=
。如:
https://www.youtube.com/embed/5gwJI7KSygA?list=PLsZLp_pMhGGXQmVVgP8zlSjp167bU3TQI
https://www.youtube-nocookie.com/embed/5gwJI7KSygA?list=PLsZLp_pMhGGXQmVVgP8zlSjp167bU3TQI
(隐私友好的替代方案)以下是使用播放列表参数嵌入视频的方法:
<iframe
title="Video title goes here"
show-info="O"
src="https://www.youtube.com/embed/5gwJI7KSygA?list=PLsZLp_pMhGGXQmVVgP8zlSjp167bU3TQI"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen="true"
loading="lazy"
></iframe>