【问题标题】:Overriding YouTube's resume playback function?覆盖 YouTube 的恢复播放功能?
【发布时间】:2017-02-11 19:28:29
【问题描述】:

有谁知道如何覆盖 YouTube 的“恢复播放”功能?我需要我网站上嵌入的 YouTube 视频每次都从头开始,而不是用户上次停止的地方。

过去,YouTube 上的恢复播放功能仅适用于 20 分钟或更长时间的视频,但最近几周,YouTube 似乎已将该功能推广到所有视频。

我以为我可以将开始时间设置为 0 秒,或者在播放器初始化后搜索到 0 秒。但这不起作用。通过任何方法将开始时间设置为 0 都会导致视频从用户上次停止的位置继续播放(如果用户已登录 YouTube)。

这是我的默认 YouTube iframe API 代码:

<div id="yt-player"></div>
<script>

var player;
var tag = document.createElement('script');

tag.src = "https://www.youtube.com/iframe_api";

var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onYouTubePlayerAPIReady() {
    player = new YT.Player("yt-player", {
        height: "433",
        width: "770",
        videoId: "[YOUTUBE_VIDEO_ID]",
        playerVars: {
            autoplay: 1,
            html5: 1,
            rel: 0
        },
        events: {
            onReady: onPlayerReady,
            onStateChange: onPlayerStateChange
        }
    })
}

function onPlayerReady(e) {
    //...
}

function onPlayerStateChange(e) {
    //...
}

</script>

到目前为止我已经尝试过:

将开始时间设置为 0 秒

...

        playerVars: {
            autoplay: 1,
            html5: 1,
            rel: 0,
            start: 0
        },

...

在玩家准备好时寻求 0 秒

function onPlayerReady(e) {
    player.seekTo(0);
}

在播放器状态 = 播放后寻求 0 秒

function onPlayerStateChange(e) {
    if(e.data==1)player.seekTo(0);
}

将自动播放设置为 false,然后在播放器就绪时调用 playVideo()

...

        playerVars: {
            autoplay: 0,
            html5: 1,
            rel: 0
        },

...

function onPlayerReady(e) {
    player.playVideo();
}

以上都不起作用(播放器就绪时的 seekTo 有时确实起作用,但更多时候不起作用。播放器将加载到用户的最后一个位置,按照指示搜索到 0,然后跳回到用户之前的最后一个位置播放。我也尝试寻求-1但没有运气)

我能找到的唯一解决方法是将开始时间设置为 1 秒(或在玩家准备好时寻求 1 秒)。但这显然不是一个理想的解决方案。

有没有人有任何建议或知道解决方法?谢谢。

【问题讨论】:

    标签: javascript jquery api youtube


    【解决方案1】:

    你的想法太复杂了。

    https://youtu.be/Z2Q7jzHCAxM?t=692 (随机视频)

    现在看最后一部分:

    t=692

    这是视频应该开始的时间(以秒为单位)。 因此,如果您将其更改为:

    t=0

    它将从头开始。

    那么,你如何利用它呢?

    var videoId = [YOUTUBE_VIDEO_ID] + "t=0";
    
        videoId: videoId,
        playerVars: {
            autoplay: 1,
            html5: 1,
            rel: 0
        },
    

    【讨论】:

    • 我试过这个,同样的事情。设置为 0 不起作用。它将从用户上次停止的地方恢复。
    • 那……奇怪,它应该可以工作,让我构建相同的示例并用它来探索。
    • 1s可以试试吗?
    • YouTube 播放器 API 不允许将任何变量作为带有视频 ID 的查询字符串传递...在 playerVars 中将开始时间设置为 1 秒确实有效,但正如我提到的那样不是一个理想的解决方案。
    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多