DIYgod / APlayer

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

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

Open rakuzen25 opened 1 year ago

rakuzen25 commented 1 year 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 1 year 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 10 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"))
        }
      },