I can replicate this result with that file.
This is the exact code I tested with (Win32 console app in VS 2010):
#include "StdAfx.h"
#include <iostream>
#include <SFML/Audio.hpp>
int main(){
sf::SoundBuffer sb;
sb.loadFromFile("file2.ogg");
std::cout << sb.getDuration().asMilliseconds() << '\n';
sf::Sound s(sb);
s.play();
while(s.getStatus() == sf::Sound::Playing) {
sf::sleep(sf::seconds(10));
double time = 100.0*s.getPlayingOffset().asMilliseconds()/(double)sb.getDuration().asMilliseconds();
std::cout << time << " ";
}
std::cout << std::endl << "Done";
char c; std::cin >> c; //quick way to ensure the console stays open for a while
}
This is the console output I got:
So we nearly hit 2000% of a 23s file (according to these numbers) which implies a length of 7 and 2/3 minutes, which seems pretty close to the 7:42 that Media Player Classic gives me. So at least MPC gets the right length, which I guess means the file isn't corrupted?