perf: ne plus précharger le fichier audio entier avant lecture

This commit is contained in:
2026-07-04 00:03:18 +04:00
parent 7234c1408f
commit 15367f388e
+8 -2
View File
@@ -20,6 +20,12 @@ import {getAlias} from '../../lib/utils/format'
const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337' const IMAGE_URL = process.env.NEXT_PUBLIC_API_URL_ROOT || 'http://localhost:1337'
function createAudio(src) {
const audio = new Audio(src)
audio.preload = 'metadata'
return audio
}
function parseLrc(text) { function parseLrc(text) {
const lines = [] const lines = []
for (const raw of text.split('\n')) { for (const raw of text.split('\n')) {
@@ -68,7 +74,7 @@ const TinyText = styled(Typography)({
}) })
export default function Lekte({audio, url, parole}) { export default function Lekte({audio, url, parole}) {
const audioRef = useRef(new Audio(audio)) const audioRef = useRef(createAudio(audio))
const intervalRef = useRef() const intervalRef = useRef()
const isReady = useRef(false) const isReady = useRef(false)
const [duration, setDuration] = useState(0) const [duration, setDuration] = useState(0)
@@ -135,7 +141,7 @@ export default function Lekte({audio, url, parole}) {
useEffect(() => { useEffect(() => {
audioRef.current.pause() audioRef.current.pause()
audioRef.current = new Audio(audio) audioRef.current = createAudio(audio)
setIsPlaying(false) setIsPlaying(false)
setVolume(100) setVolume(100)
setPosition(0) setPosition(0)