我开发了通过 iframe 播放 youtube 视频的功能,它几乎可以工作。 但也有一些视频无法在 django 模板(SSR)中播放。 然而上面的一些视频可以在react(CSR)中播放。
例如如下
工作 YouTube 网址:https://youtu.be/bPCYR5Wec-g
无法使用 YouTube 网址:https://www.youtube.com/watch?v=d7d-e4BHs0w
如何播放此 YouTube 视频?
检查这个答案后,我使用jsfiddle嵌入视频https://www.youtube.com/watch?v=d7d-e4BHs0w,并得到以下文本:
视频不可用
该视频的内容来自 LatinAutor - UMPG, 谁阻止了它在本网站或本应用程序中的播放。
如果您在浏览器中复制/粘贴嵌入链接,则不会显示原因 - 即 https://www.youtube.com/embed/d7d-e4BHs0w
TL;DR:视频可能不可用,因为所有者禁止嵌入视频,或者 YouTube 本身禁止嵌入某些视频 - 由于版权问题或任何其他模糊/未公开的原因...
在 Django 中使用 iframe 时遇到类似的问题, 我可以嵌入大部分视频,但一些流行的音乐视频无法加载并仅显示: 视频不可用。 要修复此问题,必须通过将此行添加到 settings.py: 来手动设置 Referer header
SECURE_REFERRER_POLICY = "no-referrer-when-downgrade"
事实证明,Django 默认情况下不会在请求标头中设置 Referer,对于某些视频(例如受版权保护的流行音乐视频),youtube 会检查 Referer 是否有主机名(例如 http://localhost:8000/在 dev 或 https://examplesite.com 中),如果未设置 Referer 或者它只是一个 IP(例如192.168.1.1:8000) 那么视频将无法播放。 “no-referrer-when-downgrade”是 Django 引用策略设置的 1,它添加了引用标头,除非从 https 降级到 http 并且对我有用。
<iframe src="https://www.youtube.com/embed/9bZkp7q19f0?autoplay=1&mute=1"></iframe>