(Fritt ur minner från >10 år sen när jag orkade nörda med sånt här, så jag kan minnas fel och saker kan ha ändrats. Ber om ursäkt om det här är ett goddag yxskaft-svar och jag förklarar saker du tycker är uppenbara)
Jag tror att det här är lättare att lösa i filerna än i spelaren. MP3-filer har en duration-tagg med längden i. Om den taggen saknas så räknar spelaren ut längden genom att dividera filstorleken med bitrate. Om det är en VBR-fil så varierar bitrate i filen, så då måste den läsa igenom hela filen för att kolla alla separata samples längder, så mjukvaran gör i stället en uppskattning som bara blir någon halvsekund fel om filen är en vanlig låt, men större ju längre filen är.
Så det är både lättare och mer rätt om du använder en encoder som lägger in duration-taggen ordentligt. Jag vet inte vad du använder nu, men när jag lyssnade på ljudböcker från… alternativa leverantörer så hade jag ett ffmpeg-script som sparade om filen utan att ändra ljudkodningen (så innehållet blev oförändrat) och fick då rätt längd. Datorn som det scriptet kördes på är borta sen länge, men om du är bekväm med att köra ffmpeg från kommandorad så är det nog inte så svårt att hitta rätt argument.