带播放列表参数的 YouTube 嵌入网址除首次加载外不起作用

问题描述 投票:0回答:2

我遇到了 YouTube 嵌入网址的问题,该网址的播放列表参数中包含大量视频 ID。例如:https://www.youtube.com/embed/VIDEOID1?playlist=VIDEOID2,VIDEOID3,...,VIDEOID20

在第一次加载时,它可以工作,但是如果我刷新,它会显示“此视频不可用”。然后我在其他浏览器和另一台计算机上尝试,并立即得到相同的错误。我等了几天再试一次,成功了一次,然后又回到这个错误。更改列表中的视频也具有相同的效果:对于每个唯一的列表,它会工作一次,然后就会出错。仅当视频数量较多时才会出现这种情况。

深入研究html响应并比较它起作用和不起作用的时间,我发现页面的JS中有一个PLAYER_VARS对象,并且它起作用时包含一个“list”属性,但在错误发生时该属性缺失。我还发现“list”属性的值可以用作嵌入 url 的查询字符串参数(“list”查询字符串参数),并且效果一致。

这是一个已知的错误和/或有办法解决它吗?证据似乎表明 YouTube 端存在某种服务器端缓存问题。

youtube-iframe-api
2个回答
1
投票

导致此问题的原因是在播放列表中包含了几个标记为私有的视频。


0
投票

看起来支持的查询字符串是

?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>
© www.soinside.com 2019 - 2024. All rights reserved.