标签: youtube-iframe-api

如何检查 iframe 嵌入的 Youtube 视频是否结束?

我通过 Iframe 加载 YouTube 视频。是否可以检查 YouTube 视频在这种状态下是否结束?我可以OnStateChange()通过 Iframe 使用吗?

javascript youtube iframe event-listener youtube-iframe-api

5
推荐指数
1
解决办法
2万
查看次数

YouTube iframe api - 为什么 onError 事件被调用两次?

我在使用 YouTube api 中的 onError 事件时遇到了一些问题。下面是一个带有假 videoId 的脚本,用于创建一个调用 onPlayerError 函数的错误。不幸的是我不明白为什么错误函数被调用两次。我认为这可能与函数内部的回调响应有关(也许?),但当 videoId 正确时, onReady 或 onStateChange 都不会被调用两次。任何人都可以看到任何明显的问题吗?提前致谢。

顺便说一句:是的,我确实需要回调和回调内的响应。这是我的完整脚本的缩短版本。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">

<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<!-- jQuery -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

<!-- jQuery / javascript for page -->
<script type='text/javascript'>
//<![CDATA[ 

//create deferred object
var YTdeferred = $.Deferred();

//attach a function to onYouTubeIframeAPIReady
window.onYouTubeIframeAPIReady = function() {
    //resolve when youtube callback is called passing YT as a parameter
    YTdeferred.resolve(window.YT);
    console.log('Resolved'); …
Run Code Online (Sandbox Code Playgroud)

jquery callback youtube-api youtube-javascript-api youtube-iframe-api

5
推荐指数
1
解决办法
3097
查看次数

动态更改 YouTube“控制”playervars

我正在开发一个播放器,它在加载时会寻找指定的时间并开始循环播放视频的一小部分。首先,这将用作背景,但是,有一个带有样式播放按钮的覆盖层,可以提供视频详细信息。单击该按钮后,视频将重置为开始、取消静音和播放。我一切正常,除了当视频重置时它会中断 onPlayerStateChange 事件,这意味着视频不会检测到结束并重置其循环。我相信这取决于我如何通过访问 src 属性并将“controls=0”更改为“controls=1”来更改playerVars。是否有更正确的方法来更改这些属性,而不会破坏玩家事件?我在这里设置了一个小提琴:https ://jsfiddle.net/BearSkull/uqje4793/

  //This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');

tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

//This function creates an <iframe> (and YouTube player)
//after the API code downloads.
var youTubeId = '-hTVNidxg2s';
var startTime = 85; //start time in seconds
var stopTime = 95; //end time in seconds
var playInterval = (stopTime - startTime) * 1000; //converts to milliseconds
var ratio = 16 / 9; //YT …
Run Code Online (Sandbox Code Playgroud)

javascript youtube jquery youtube-api youtube-iframe-api

5
推荐指数
0
解决办法
1396
查看次数

Youtube iFrame 嵌入 stopVideo 不是函数

我正在尝试将 YouTube iframe 嵌入到我网站上的自定义灯箱中。嵌入本身运行良好。当我尝试关闭灯箱时,灯箱会关闭,但视频(而不是音频)会在后台继续播放。stopVideo函数返回“stopVideo 不是函数”

$("#youTubeLink").click(function(){
     var f = '<iframe id="ytplayer" type="text/html" width="100%" height="400px" src="http://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1&origin=http://example.com" frameborder="0"></iframe>'
     global.addLightboxContent(f);
     global.showLightbox();
});
Run Code Online (Sandbox Code Playgroud)

当我关闭灯箱时,就会发生这种情况

$("div#lightbox-close").click(function() {
    $('#ytplayer').stopVideo();
    global.killLightbox();
}
Run Code Online (Sandbox Code Playgroud)
  • 全局灯箱功能正在做它们应该做的事情(将 iframe 添加到 LB,显示它,然后杀死它)
  • div#lightbox-close点击 时,该功能被触发。使用控制台日志进行测试

我猜我缺少某种 Youtube js 脚本包含。我不确定到底是什么。

javascript youtube iframe jquery youtube-iframe-api

5
推荐指数
1
解决办法
2万
查看次数

youtube-iframe-api 隐藏式字幕问题

昨天(2017 年 6 月 12 日)花费了大部分时间试图弄清楚为什么当我使用 YouTube iframe 嵌入代码(从“共享”>“嵌入”按钮生成)时我的字幕不起作用。

经过多次实验,我将问题范围缩小到已经确定的范围。隐藏式字幕无法正常工作,因为字幕是自动生成的。当我手动创建隐藏式字幕后,一切似乎都工作正常。我什至不必使用 cc_load_policy=1 参数。

但是...今天 6/13/2017,我碰巧正在处理相同的视频文件,突然我得到了不同的行为。当我从常规 YouTube 页面播放视频时,我会看到字幕。当我从 iframe 嵌入式播放器播放视频时,我不播放视频。尝试了各种愚蠢的事情来让事情在阅读的基础上发挥作用。

  • 重新创建了英文隐藏字幕(在开始时手动创建了一个简介)。
  • 设置 cc_load_policy=1 参数
  • 设置 yt:cc=on 作为标签
  • 其他一些不值得一提的愚蠢的事情。

字幕

注意:在这两种情况下,域名都是:http://www.youtube.com我只能在帖子中包含 2 个链接。

/watch?v=EExO_6PVIXk

无字幕:

/嵌入/EExO_6PVIXk /嵌入/EExO_6PVIXk?cc_load_policy=1

我很茫然。任何方向将不胜感激。

约翰

youtube-iframe-api

5
推荐指数
1
解决办法
3955
查看次数

我希望我的 YouTube 视频始终从头开始播放,而不是上次停止的地方

当我将 YouTube 视频加载到我的网页时,我希望它默认从头开始播放。我正在使用 javascript 代码来控制它,并且我需要它最初从那里开始。不过,每次我重新加载页面时,视频都会从上次停止的地方播放,我无法测试我的脚本。

javascript iframe youtube-iframe-api

5
推荐指数
1
解决办法
8147
查看次数

有没有办法使用 iframe api 在暂停时隐藏相关的 Youtube 视频?

我正在使用 iframe API,我想在页面上嵌入一些视频,但我不想在用户暂停视频时显示相关视频。

我知道在 2018 年 9 月之后,Youtube 取消了在结尾或暂停视频时隐藏相关视频的可能性。

我知道参数 rel=0 现在显示来自视频上传者的同一帐户的相关视频。

我也知道这个问题已经被回答过很多次了,但我至少见过一个网站没有发生这种情况。示例:https : //earth.stanford.edu/

要生成 iframe,我使用以下代码:

function onYouTubeIframeAPIReady() {
    player = new YT.Player('player1', {
        height: '360',
        width: '640',
        videoId: 'lPVBrRd9wCo',
        playerVars: {
            rel: '0',
            showinfo: '0',
            loop: '1',
            playlist: 'lPVBrRd9wCo',
            autoplay: '1',
            mute: '1',
            iv_load_policy: '3',
            'ytp-pause-overlay': '0'
        },
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

https://codepen.io/romualdinho/pen/wZbxmj 中的完整代码

有没有其他方法可以在暂停时隐藏相关视频?斯坦福是如何做到的?我尝试了相同的方式,相同的参数等,但没有。他们甚至能够隐藏视频的标题。

是否有某种允许这样做的 Google 帐户?(高级、非营利、教育等)

谢谢!

javascript youtube-api youtube-iframe-api

5
推荐指数
1
解决办法
1750
查看次数

如何修复 iframe 内嵌入的 YouTube 视频的无限加载?

我正在使用 videojs-youtube 插件在我的网络应用程序中播放嵌入的 youtube 视频。最近我注意到当 web 应用程序被包裹在 iframe 中时,视频会卡在无限加载中。由于此过程,控制台不会显示任何相关错误。

在尝试调试此问题时,我意识到 PlayerStatus(如 IFrame Player API 中所述)正在以错误的方式更改:当视频未包含在 iframe 中时,PlayerStatus 从“未启动”变为“正在缓冲”并变为“玩'。另一方面,当视频被包装在 iframe 中时, PlayerStatus 再次从“未启动”变为“正在缓冲”到“未启动”

但是有一个奇怪的例外 - 当安装并激活 AdBlock 或 LastPass 等 chrome 扩展程序时,视频可以正常播放,即使它在 iframe 内。

知道为什么会这样吗?谢谢 :)

javascript iframe youtube-api video.js youtube-iframe-api

5
推荐指数
1
解决办法
1629
查看次数

无法在“DOMWindow”上执行“postMessage”:提供的目标源(“&lt;URL&gt;”)与收件人窗口的源(“&lt;URL&gt;”)不匹配

我收到此错误: 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

5
推荐指数
1
解决办法
1374
查看次数

视频所有者已禁止在其他网站上播放(但事实并非如此)

请检查此视频。它来自我的视频频道https://www.youtube.com/watch?v=lgFXZP8K7Ew

我的问题是,当我将此视频嵌入我的网站时,它会向我显示此消息 ( https://ibb.co/r3mvsfH )。但是在视频 ( https://ibb.co/z6BzGVD )上选中了“允许嵌入” 。我在同一个邮件地址下有两个 YouTube 帐户,两个帐户的所有视频都显示“视频所有者已禁用在其他网站上播放”

仅供参考,这不是直播,只是我帐户中的普通视频剪辑。

什么都试过了,每次故障排除;相同的结果。

这是我试图放置的代码

<iframe width="560" height="315" src="https://www.youtube.com/embed/lgFXZP8K7Ew" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

youtube youtube-api youtube-iframe-api

5
推荐指数
1
解决办法
2359
查看次数