mirror of
https://github.com/ZHANGTIANYAO1/teamspeak-music-bot.git
synced 2026-10-02 04:52:50 +08:00
fix: server-side elapsed tracking via frame count, periodic sync, playlist respects play mode
Progress/lyrics sync: - AudioPlayer tracks framesPlayed (ground truth: frames * 20ms + seekOffset) - BotStatus.elapsed is the real elapsed from server - Frontend polls GET /elapsed every 3s for ground truth - Client interpolates between syncs (serverElapsed + timeSinceSync) - Pause freezes at interpolated value, resume resyncs from server - No more client-side timestamp drift Playlist play all: - Stops current playback before loading - Respects play mode: random/rloop picks random first song, seq plays first Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
1cdface33c
commit
0439bd047f
6 files changed
+131
-109
No files matched your search
+2
-4
@@ -37,8 +37,7 @@ export interface BotStatus {
|
||||
queueSize: number;
|
||||
volume: number;
|
||||
playMode: PlayMode;
|
||||
seekOffset: number; // seconds offset from last seek/play start
|
||||
playStartTime: number; // server timestamp when playback started
|
||||
elapsed: number; // ground truth elapsed seconds from frame count
|
||||
}
|
||||
|
||||
export class BotInstance extends EventEmitter {
|
||||
@@ -507,8 +506,7 @@ export class BotInstance extends EventEmitter {
|
||||
queueSize: this.queue.size(),
|
||||
volume: this.player.getVolume(),
|
||||
playMode: this.queue.getMode(),
|
||||
seekOffset: this.player.getSeekOffset(),
|
||||
playStartTime: Date.now(),
|
||||
elapsed: this.player.getElapsed(),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user