DIYgod / APlayer

:lollipop: Wow, such a beautiful HTML5 music player
http://aplayer.js.org
MIT License
7.32k stars 1.03k forks source link

Adding offset to lyrics dynamically / 动态调整LRC歌词偏移延迟 #754

Open rakuzen25 opened 2 years ago

rakuzen25 commented 2 years ago

I know I can preprocess the LRC file and adjust the timing before loading into APlayer, but I'm wondering if it's possible to change the lyrics offset on the fly without reloading the song.

For example, I'd like to do something like lrc.setOffset(1000) to +1000ms for each line.

rakuzen25 commented 2 years ago

One solution I'm thinking of is to use the timeupdate event:

player.on("timeupdate", () => {
    player.lrc.update(player.audio.currentTime + offset);
});

But still feels a bit weird…

yife68 commented 11 months ago

不知是否有办法定义下面的这个滚动高度呢?16 → 80

{
        key: "update",
        value: function () {
          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.player.audio.currentTime;
          if (this.index > this.current.length - 1 || e < this.current[this.index][0] || !this.current[this.index + 1] || e >= this.current[this.index + 1][0])
            for (var t = 0; t < this.current.length; t++) e >= this.current[t][0] && (!this.current[t + 1] || e < this.current[t + 1][0]) && (this.index = t, this.container.style.transform = "translateY(" + 16 * -this.index + "px)", this.container.style.webkitTransform = "translateY(" + 16 * -this.index + "px)", this.container.getElementsByClassName("aplayer-lrc-current")[0].classList.remove("aplayer-lrc-current"), this.container.getElementsByTagName("p")[t].classList.add("aplayer-lrc-current"))
        }
      },