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,因为他们在网站上做)。

所以我很抱歉,但这是不可能的。