【问题标题】:Video speed variable doesn't reset, but previous effect is also not taking place?视频速度变量没有重置,但之前的效果也没有发生?
【发布时间】:2016-08-25 23:09:28
【问题描述】:

我们正在使用 hapyak 加载我们的视频播放列表。我们添加了自定义速度按钮,允许用户提高或降低播放速度。

较慢(点击 1 次会使视频减慢 5%,最慢的是从 100% 减慢 80%)。

正常点击可将视频恢复到 100%。

较快与较慢相同,但速度较快,最大值为 150%。

基本上发生的情况是当视频发生变化(没有页面重新加载)时,按钮保持其当前数量(通常为 150%),但视频上不存在效果。点击“播放速度”按钮不会执行任何操作,但如果您点击“播放速度较慢”将其降至 145%,然后点击返回以加快播放速度,它将以 150% 的速度继续播放视频。

有没有一种方法可以同时获得速度变量和在整个播放列表中延续的效果?

  var currentSpeed = 1;
  var fadeout_timer = setTimeout(function() {
    $( "#videoSpeed" ).fadeOut();
  }, 1600);

  function updateSpeed() {
    document.getElementById("videoSpeedCounter").innerHTML = (Math.round(currentSpeed * 100)) + "%";

    if ($("#videoSpeed").is(":hidden")) {
      $( "#videoSpeed" ).fadeIn();
    }

    // Fade out after 1600ms from last click -- clearTimeout resets the fadeout timer.
    clearTimeout(fadeout_timer);

    fadeout_timer = setTimeout(function() {
      $( "#videoSpeed" ).fadeOut();
    }, 1600);
    return false;

  }

  function speedIncrease() {
    if (currentSpeed < 1.50) {
      currentSpeed = currentSpeed + 0.05;
      hapyak.playlist.get()._player.playbackRate(currentSpeed);
      updateSpeed();
    }
    return false;
  }

  function speedDecrease() {
    if (currentSpeed > .8) {
      currentSpeed = currentSpeed - 0.05;
      hapyak.playlist.get()._player.playbackRate(currentSpeed);
      updateSpeed();
    }
    return false;
  }

  function resetSpeed() {
    currentSpeed = 1;
    hapyak.playlist.get()._player.playbackRate(currentSpeed);
    updateSpeed();
  }

  function nextVideo() {
      currentSpeed = currentSpeed
      hapyak.playlist.get()._player.playbackRate(currentSpeed);

  }

  var hapyakPlaylist = hapyak.playlist.get();
  console.log("Playlists: " + hapyakPlaylist);

理论上,我相信我只需要一种方法来保存currentSpeed,这样它就不会在开始时重置。

<div class="video-speed-buttons-container">
  <a onclick="speedDecrease()"><div class="video-speed-button first">Play slower</div></a>
  <a onclick="resetSpeed()"><div class="video-speed-button">Normal speed</div></a>
  <a onclick="speedIncrease()"><div class="video-speed-button">Play faster</div></a>
  <div class="video-speedometer" id="videoSpeed">Speed: <span id="videoSpeedCounter">100%</span></div>
</div>

【问题讨论】:

    标签: jquery performance video


    【解决方案1】:

    这是来自 HapYak 的凯尔。 HapYak Viewer 对象持有对设置了playbackRate 的播放器的引用。当您更改为不同的视频时,查看器对象将被销毁,并为新加载的视频设置一个新实例。您需要做的是获取对当前 Viewer 对象的引用,并在播放列表中的不同视频播放时重置playbackRate。

    您可以从 hapyak.instances.viewer 集合中获取参考。

    如果您向我发送指向您的页面/实现的链接,我可以尝试提供更具体的示例。

    【讨论】:

      猜你喜欢
      • 2012-12-31
      • 2021-08-20
      • 1970-01-01
      • 2021-11-14
      • 2022-01-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2018-01-01
      相关资源
      最近更新 更多