feat(core): audio playback rate (#11702)

fix AF-2470
This commit is contained in:
pengx17
2025-04-16 07:49:12 +00:00
parent 30184817da
commit 51316217af
9 changed files with 135 additions and 8 deletions
@@ -10,6 +10,7 @@ export const useSeekTime = (
state: AudioMediaPlaybackState;
seekOffset: number;
updateTime: number;
playbackRate: number;
}
| undefined
| null,
@@ -24,7 +25,8 @@ export const useSeekTime = (
if (playbackState) {
const timeElapsed =
playbackState.state === 'playing'
? (Date.now() - playbackState.updateTime) / 1000
? ((Date.now() - playbackState.updateTime) / 1000) *
(playbackState.playbackRate ?? 1.0)
: 0;
// if timeElapsed + playbackState.seekOffset is close to duration,
// set seekTime to duration
@@ -99,6 +99,13 @@ export const SidebarAudioPlayer = () => {
[audioMediaManagerService]
);
const handlePlaybackRateChange = useCallback(
(rate: number) => {
audioMediaManagerService.setPlaybackRate(rate);
},
[audioMediaManagerService]
);
const handlePlayerClick = useCallback(
(e: React.MouseEvent<HTMLDivElement>) => {
e.stopPropagation();
@@ -130,6 +137,8 @@ export const SidebarAudioPlayer = () => {
onPause={handlePause}
onStop={handleStop}
onSeek={handleSeek}
playbackRate={playbackState.playbackRate || 1.0}
onPlaybackRateChange={handlePlaybackRateChange}
waveform={playbackStats.waveform}
/>
</div>