我一直在寻找一个解决方案,但我还没有找到它.我们的应用需要使用player.getCurrentTime()驱动某些屏幕动画来轮询YouTube视频对象.使用Flash API这很棒,因为我们可以40ms间隔(25 FPS)轮询播放器并获得非常准确的当前播放器时间值.我们现在已经开始使用iFrame API,遗憾的是它不允许任何接近该准确度的任何内容.我做了一些研究,似乎因为它是一个iFrame,a postMessage用于将玩家状态暴露给player.getCurrentTime()呼叫.不幸的是,这个帖子消息事件很少被触发 - 有时低至每秒4次.更糟糕的是,消息触发的实际速率似乎取决于浏览器的渲染引擎.
有人知道是否有可能强制渲染引擎更频繁地触发这些消息,以便可以实现更长的时间分辨率来轮询播放器?我试过requestAnimationFrame,它没有解决问题.有没有人成功地让iFrame播放器更频繁地报告更准确的时间?
在Bootstrap 3.1的网格系统中嵌入视频,视频不会扩展网格列的全宽.如何保持100%宽到父列保持纵横比?此外,即使我使用4:3视频,它在浏览器中看起来非常宽,高度很短.这是我的代码:
<div class="row">
<div class="col-md-8">
.
<!-- other items-->
.
</div>
<div class="col-md-4">
<div class="embed-responsive embed-responsive-4by3">
<iframe class="embed-responsive-item" src="//www.youtube.com/embed/gYhi3pAiQY4"></iframe>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) html responsive-design twitter-bootstrap-3 youtube-iframe-api
我有一个youtube的网址:
<iframe class="embed-responsive-item" ng-src="https://www.youtube.com/embed/s7gJ74ARN84" allowfullscreen=""></iframe>
Run Code Online (Sandbox Code Playgroud)
如果我在我的本地html文件中使用它,它可以很好地运行.但是,当我在phonegap ios app html页面中粘贴相同内容并在ios模拟器中运行时,它会显示以下错误,就像我点击视频一样:
Blocked a frame with origin "https://www.youtube.com" from accessing a frame with origin "file://".
The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "file". Protocols must match.
Run Code Online (Sandbox Code Playgroud)
解:
它不是在模拟器中工作,而是在移动设备上工作,这是我的最终目标.
我遇到了与angularjs一起使用的Youtube Iframe Api的问题.
我认为问题是调用"onYouTubeIframeAPIReady"功能.
我使用带路线的angularjs,当路线改变时功能不会触发,但是当我按下F5时,玩家就可以加载了.
有没有办法让angularjs与路由和youtube API工作?
我没有设法在代码中添加更多文件,但"pageX.htm"看起来像这样:
<button ng-click="video()">Create</button>
<div youtube-player id="test-playerX" ></div>
Run Code Online (Sandbox Code Playgroud)
还有"index.htm"的代码
<!DOCTYPE html>
<html ng-app="sc">
<body>
Homepage - <a href="#page1">Page1</a> - <a href="#page2">Page2</a>
<div ng-view></div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<script src="https://code.angularjs.org/1.4.3/angular-route.min.js"></script>
<script>
var sc = angular.module('sc', ['ngRoute']);
sc.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/page1', {
templateUrl: 'page1.htm'
})
.when('/page2', {
templateUrl: 'page2.htm'
})
}]);
// Run
sc.run(['$rootScope', function($rootScope) {
var tag = document.createElement('script');
// This is a protocol-relative URL as described here:
// http://paulirish.com/2010/the-protocol-relative-url/
// If you're testing a local …Run Code Online (Sandbox Code Playgroud)我想使用 iframe API 延迟加载 youtube 视频。IE。一开始只加载海报图片,当用户点击它时,只加载实际图片及其内容。
我注意到在嵌入Youtube视频时,以下2个网址实现了相同的结果:
https://www.youtube.com/embed/ML1AyQC2HKM?ecver=2&modestbranding=1&rel=0
https://www.youtube.com/embed/kwdRYaBUco4?modestbranding=1&rel=0
ecveryoutube嵌入URL 的参数设置是什么?
检查文档并搜索互联网后,我似乎找不到任何解释此参数的内容.
该名称会建议设置Ecmascript版本?但这只是在黑暗中刺伤,我似乎无法找到任何证实这一点.
情况
我目前正在我的页面上嵌入 YouTube iframe 并将其加载到弹出模式之上。当我按“ESC”时,我可以关闭弹出模式,但如果用户将选项卡焦点放在 YouTube 播放器中的某些内容上,则浏览器将不再能够检测用户是否按“ESC”来尝试关闭弹出模式。这绝对是一个 A11y 问题。
要解决的问题
有没有办法检测用户是否在焦点被困在播放器内时按下“ESC”键?有用于playerStateChange、质量变化等的事件发射器,但我没有看到任何按键事件。
已经考虑但被拒绝的解决方案:
非常感谢任何帮助/指导!
当我使用 google 的 YTPlayer 显示带有 的视频时cc_load_policy=1,如果相关视频只有英文(自动生成)字幕,我仍然看不到字幕 - 难道英文(自动生成)字幕不应该出现吗?在这种情况下显示?
我尝试过设置cc_lang_pref=en以及hl=en参数但无济于事。
该cc_load_policy=1参数确实适用于有英文字幕的视频,因此我认为该问题与代码本身没有任何关系。
我是否应该使用特殊的英语语言代码(自动生成) ?
new YT.Player("ytplayer_placeholder", {
width: "100%",
videoId: "4Uzbpj1UCEY",
playerVars: {cc_load_policy: 1},
events: {
'onReady': player_ready,
'onStateChange': schedule_buffering,
'onError': error_handler
}
});
Run Code Online (Sandbox Code Playgroud)
上面的示例代码包括存在此类问题的youtube videoid。它应该显示带有英文(自动生成)字幕的视频,但什么也没有出现。我可以手动单击 CC 按钮来显示字幕,但我需要自动发生。
我正在使用 videojs-youtube 插件在我的网络应用程序中播放嵌入的 youtube 视频。最近我注意到当 web 应用程序被包裹在 iframe 中时,视频会卡在无限加载中。由于此过程,控制台不会显示任何相关错误。
在尝试调试此问题时,我意识到 PlayerStatus(如 IFrame Player API 中所述)正在以错误的方式更改:当视频未包含在 iframe 中时,PlayerStatus 从“未启动”变为“正在缓冲”并变为“玩'。另一方面,当视频被包装在 iframe 中时, PlayerStatus 再次从“未启动”变为“正在缓冲”到“未启动”。
但是有一个奇怪的例外 - 当安装并激活 AdBlock 或 LastPass 等 chrome 扩展程序时,视频可以正常播放,即使它在 iframe 内。
知道为什么会这样吗?谢谢 :)
我收到此错误: Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('<URL>') does not match the recipient window's origin ('<URL>').
我的页面按我希望的方式运行(我没有注意到任何不受欢迎的行为),但我从不喜欢忽略控制台中的错误,尤其是在我什至不了解根本原因的情况下。
我的问题不是重复的,因为我已经研究了所有这些问题,但没有一个答案有效:
我已经在用了https。
我已经尝试设置playerVars为{origin: window.location.origin}.
我已经尝试过设置host。
我已经尝试过更改 iframe 的可见性。
等等。
var playerVars = {origin: window.location.origin};///sf/answers/3536277321/
window.onYouTubeIframeAPIReady = function () {
for (var i = 0; i < youtube.length; i++) …Run Code Online (Sandbox Code Playgroud) youtube youtube-api youtube-javascript-api youtube-iframe-api