Fix player bug (#912)

* fix player cannot play at the first time

* fix sentence seek
This commit is contained in:
an-lee
2024-07-31 07:43:57 +08:00
committed by GitHub
parent 97571610e4
commit 115afeb2e0
3 changed files with 6 additions and 14 deletions

View File

@@ -57,9 +57,7 @@ export const MediaPlayerControls = () => {
setTranscriptionDraft,
} = useContext(MediaPlayerProviderContext);
const { EnjoyApp } = useContext(AppSettingsProviderContext);
const { currentHotkeys } = useContext(
HotKeysSettingsProviderContext
);
const { currentHotkeys } = useContext(HotKeysSettingsProviderContext);
const [playMode, setPlayMode] = useState<"loop" | "single" | "all">("single");
const [playbackRate, setPlaybackRate] = useState<number>(1);
const [grouping, setGrouping] = useState(false);
@@ -332,9 +330,8 @@ export const MediaPlayerControls = () => {
setCurrentSegmentIndex(0);
return;
}
wavesurfer.seekTo(
Math.ceil((segment.startTime / wavesurfer.getDuration()) * 1e8) / 1e8
);
wavesurfer.setScrollTime(segment.startTime);
wavesurfer.setTime(parseFloat(segment.startTime.toFixed(6)));
}, [decoded, transcription?.id, wavesurfer]);
useEffect(() => {
@@ -372,9 +369,7 @@ export const MediaPlayerControls = () => {
if (currentTime < activeRegion.start || currentTime > activeRegion.end) {
wavesurfer.setScrollTime(activeRegion.start);
wavesurfer.seekTo(
Math.ceil((activeRegion.start / wavesurfer.getDuration()) * 1e8) / 1e8
);
wavesurfer.setTime(parseFloat(activeRegion.start.toFixed(6)));
}
}, [wavesurfer, decoded, playMode, activeRegion, currentTime]);

View File

@@ -182,10 +182,7 @@ export const MediaTranscription = (props: { display?: boolean }) => {
currentSegmentIndex === index ? "bg-yellow-400/25" : ""
}`}
onClick={() => {
const duration = wavesurfer.getDuration();
wavesurfer.seekTo(
Math.floor((sentence.startTime / duration) * 1e8) / 1e8
);
wavesurfer.setTime(parseFloat(sentence.startTime.toFixed(6)));
wavesurfer.setScrollTime(sentence.startTime);
setCurrentSegmentIndex(index);
}}

View File

@@ -102,7 +102,7 @@ export const RecordingPlayer = (props: {
if (!wavesurfer) return;
if (!seek?.seekTo) return;
wavesurfer.seekTo(seek.seekTo / wavesurfer.getDuration());
wavesurfer.setTime(parseFloat(seek.seekTo.toFixed(6)));
}, [seek, wavesurfer]);
useEffect(() => {