【问题标题】:youtube api iframe loadvideobyid starts video where last one left offyoutube api iframe loadvideobyid 在最后一个停止的地方开始视频
【发布时间】:2012-11-26 11:37:11
【问题描述】:

我正在使用 youtube api iframe 并开始使用示例代码。当我发出: player.loadVideoById("ytidNo1") 正确的视频开始("ytidNo1" 是一个有效的 youtube id)

然后,比如说,10 秒后,如果我发出另一个: player.loadVideoById("ytidNo2") 第二个视频开始,但它从最后一个播放的点开始(例如 10 秒)。

这是最近一天左右的新行为,我没有更改我的代码。

为了纠正这个问题,我尝试了: player.loadVideoById("ytidNo1",0)

然后

player.loadVideoById("ytidNo2",0)

问题仍然存在。

其他人有或刚开始有这个问题?

【问题讨论】:

    标签: iframe youtube-api


    【解决方案1】:

    我也遇到了同样的问题。到处玩,我终于让它工作了。 我不得不使用 seekTo(0); (见 Jim 的 cmets)

    有关问题的更多详细信息。

    • 如果视频真的播放到最后,我不需要做任何事情。
    • 如果视频在中途被跳过,我必须致电 player.seekTo(0); 在调用 loadVideoByID("ytid", 0); 之前在旧视频上在下一个视频中。
    • 我还必须处理调用 loadVideoByID 后出现错误的情况。 (例如 150)如果出现错误,我无法调用 seekTo,因为这会导致下一个视频仅播放音频。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      我正在尝试使用官方示例重现该问题::

      https://developers.google.com/youtube/iframe_api_reference

      停止后,我正在以相同的方式选择另一个视频,并且似乎效果很好:

      <!DOCTYPE html>
      <html>
        <body>
          <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
          <div id="player"></div>
      
          <script>
            // 2. This code loads the IFrame Player API code asynchronously.
            var tag = document.createElement('script');
            tag.src = "//www.youtube.com/iframe_api";
            var firstScriptTag = document.getElementsByTagName('script')[0];
            firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
      
            // 3. This function creates an <iframe> (and YouTube player)
            //    after the API code downloads.
            var player;
            function onYouTubeIframeAPIReady() {
              player = new YT.Player('player', {
                height: '390',
                width: '640',
                videoId: 'u1zgFlCw8Aw',
                events: {
                  'onReady': onPlayerReady,
                  'onStateChange': onPlayerStateChange
                }
              });
            }
      
            // 4. The API will call this function when the video player is ready.
            function onPlayerReady(event) {
              event.target.playVideo();
            }
      
            // 5. The API calls this function when the player's state changes.
            //    The function indicates that when playing a video (state=1),
            //    the player should play for six seconds and then stop.
            var done = false;
            function onPlayerStateChange(event) {
              if (event.data == YT.PlayerState.PLAYING && !done) {
                setTimeout(stopVideo, 6000);
                done = true;
              }
            }
            function stopVideo() {
              player.stopVideo();
              player.loadVideoById("tYrND5hMY3A");
            }
          </script>
        </body>
      </html>​
      

      http://jsfiddle.net/5wxFv/3/

      【讨论】:

      • 谢谢。我尝试了您的链接,问题似乎是 iPad 上的 Safari 浏览器......我描述的确切行为发生在 iPad 上的 Safari 浏览器上,但例如不在 PC 上的 Chrome 上。
      • 通过使用以下顺序修复了问题: player.stopVideo(); player.loadVideoById("ytid",0); player.seekTo(0);
      猜你喜欢
      • 2015-10-09
      • 2012-05-08
      • 1970-01-01
      • 2020-08-24
      • 2012-04-04
      • 2011-10-04
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      相关资源
      最近更新 更多