size_in_bytes / bitrate = length_in_seconds.
для wmp вы можете использовать
lblPlayTime.Caption = wmp.CurrentPosition \ 60 & ":" & Format(Int(wmp.CurrentPosition Mod 60), "00") & " / " & wmp.SelectionEnd \ 60 & ":" & Format(Int(wmp.SelectionEnd Mod 60), "00")
Здесь есть отличная информация http://www.codeproject.com/KB/audio-video/mpegaudioinfo.aspx
Переменные битрейты могут иногда приводить к тому, что длительность в WMP (и других) может быть непостоянна Я бы не рассчитывал, что это будет жестким и быстрым правилом для поврежденных файлов.