Javascript 具有自定义速度的嵌入式YouTube视频(如3)
我在一个页面中嵌入了一个YouTube视频,并且有一个滑块,可以用来设置播放器的速度 我正在使用Javascript 具有自定义速度的嵌入式YouTube视频(如3),javascript,api,video,youtube,youtube-api,Javascript,Api,Video,Youtube,Youtube Api,我在一个页面中嵌入了一个YouTube视频,并且有一个滑块,可以用来设置播放器的速度 我正在使用player.setPlaybackRate(值) 问题是我想要的范围是0.5到3,但播放器API仅将值限制为预定义的[0.25,0.5,1,1.25,1.5,2] 在YouTube上,我可以通过document.getElementsByTagName(“视频”)[0]轻松调整速度。playbackRate=3但在iframe上我没有这样的访问权限。不幸的是,您试图编辑来自另一个域的iframe内容
player.setPlaybackRate(值)代码>
问题是我想要的范围是0.5到3,但播放器API仅将值限制为预定义的[0.25,0.5,1,1.25,1.5,2]
在YouTube上,我可以通过document.getElementsByTagName(“视频”)[0]轻松调整速度。playbackRate=3
但在iframe上我没有这样的访问权限。不幸的是,您试图编辑来自另一个域的iframe内容。没有一款主流浏览器允许您通过javascript实现这一点
我尝试并创建了php文件,该文件将获取youtube嵌入iframe的内容
<?php
$url = $_GET['url'];
$contents = file_get_contents($url);
echo $contents;
?>
但不知何故,youtube屏蔽了不同的来源,它只给了我黑屏。
我猜这是因为youtube使用flash播放器嵌入视频(而不是像他们在网站上那样使用html5)
很抱歉,这是不可能的。您在哪里看到播放器API限制了这些值?在JavaScriptAPI中,您可以使用设置建议的播放速率,但它表示无法保证将设置您发送的内容。您应该使用获取播放速率列表,然后选择适当的播放速率。您可以通过收听以下内容来了解实际设置的速率。如果您尝试将其设置为3,但这不是可用的速率之一,它将向1取整,以最接近的速率。编辑:这不再有效。
这是由于同一原产地政策。当iframe被根源(您的网站)访问时,它似乎也会更改iframe的源。因此视频无法从其他来源(youtube.com)加载。看我的
我认为,事实上,它以前是一个XSS安全问题,最近已经修复。因此,我无法想象修改youtube iframe中的某些内容是可能的。至少不是这样
谢谢@maxple的指点
原创帖子:
对于较新的浏览器和:
使用该选项,您可以访问iframe DOM节点
<iframe id="myframe" sandbox="allow-scripts" src="about:blank"> </iframe>
<script>
var frame = document.getElementById("myframe");
var fdoc = frame.contentDocument;
fdoc.getElementsByTagName("video")[0].playbackRate = 3; // or whatever
</script>
var frame=document.getElementById(“myframe”);
var fdoc=frame.contentDocument;
fdoc.getElementsByTagName(“视频”)[0]。播放速率=3;//或者别的什么
有关更多信息,请参阅此部分。在iFrame中不能执行相同的操作。
你在Youtube上所做的是编辑实际的视频标签,但从另一个网站上编辑视频标签的唯一方法是通过谷歌提供的API(出于XSS的考虑),如果他们决定只允许建议的值,你最好不要做可能违反其服务条款的事情,就是让他们通过API实现第三级的速度。即使他谈到iFrame,我认为他是在专门谈论。我使用player.getPlaybackRate()
获取值您需要收听OnPlaybackRate更改事件,以便知道何时需要/能够调用getPlaybackRate。否则,由于设置播放速率是异步的并且需要一些时间,因此在设置播放速率后立即调用getPlaybackRate的代码可能会报告错误的速率。确定,但我正在测试的视频的速度仍然不如播放速度快3倍时的速度快。当您为视频调用getAvailablePlaybackRates时,getAvailablePlaybackRates会返回什么?3可用吗?[0.25,0.5,1,1.25,1.5,2]