embeddedYouTubevideo与自定义速度(例如3)
我有一个embedded的YouTubevideo在一个页面,并有一个滑块,我可以设置播放器的速度。
我使用的是player.setPlaybackRate(value);
问题是,我想从0.5到3的范围,但播放器的API只限于预定义的值[0.25, 0.5, 1, 1.25, 1.5, 2]
。
在YouTube中,我可以通过document.getElementsByTagName("video")[0].playbackRate = 3
轻松调整速度,但是在iframe中我没有这样的访问权限。
你在哪里看到播放器API限制了这些值? 在javascript API中,您可以使用setPlaybackRate来设置build议的播放速率,但是它说没有保证您发送的内容将被设置。 您应该使用getAvailablePlaybackRates获取播放速率列表,然后select适当的播放速率。 您可以通过侦听onPlaybackRateChangeevent来确定实际设置的速率 。 如果您尝试将其设置为3,而这不是可用费率中的一个,则会向最接近的比率舍入1。
编辑:这不工作了。
这是由于同源政策。 当一个iframe被根源(你的网站)访问时,它似乎也改变了iframe的来源。 所以video无法从不同的来源加载(youtube.com)。 在JSFiddle上查看我的testing 。
我认为之前的工作是一个最近已经解决的XSS安全问题。 所以我无法想象在YouTube上的iframe甚至可以修改的东西了。 至less不是这样。
感谢@maxple指出!
原文:
对于较新的浏览器和HTML5 Iframe沙盒属性,这应该是可能的:
使用该选项,您可以访问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>
看到这个职位了解更多信息。
你不能在一个iFrame中做同样的事情。
你在Youtube上做的是编辑实际的video标签,但是从另一个网站上来的唯一方法是通过Google提供的API(由于XSS的关注),如果他们决定只允许提出的值,除了可能违反服务条款之外,您最擅长的方式就是联系Google,并要求他们通过API允许第三级速度。
不幸的是,你正试图从另一个域编辑iframe的内容。 主stream的浏览器都不允许你通过javascript来做到这一点。
我试图创buildPHP文件,这将获得内容的YouTubeembeddediframe
<?php $url = $_GET['url']; $contents = file_get_contents($url); echo $contents; ?>
但不知何故,youtube阻止不同的起源,它给了我只有黑屏。 因为我猜测这是因为youtube使用Flash播放器embeddedvideo(而不是HTML5,因为他们在网站上做)。
所以我很抱歉,但这是不可能的。