я раньше объявлял, что некоторые переменные с register
ключевое слово помогают вещам скорости встать. Это дало бы подсказку компилятору C для использования регистра ЦП в качестве локального устройства хранения данных. Это наиболее вероятно больше не необходимое, поскольку современные дневные компиляторы C делают это автоматически.
Очевидно, этот класс вычисляет продолжительность, используя fileSize / bitRate. Это может работать только с постоянным битрейтом, и я предполагаю, что ваш MP3 имеет переменную bitRate ...
РЕДАКТИРОВАТЬ: взгляните на TagLib Sharp , он может дать вам продолжительность
Как вы определили длину MP3, которые являются "неправильными"? Я часто обнаруживал, что информация в заголовке может быть неверной: например, была определенная версия LAME, в которой была эта проблема.
Если вы открываете свойства файла в проводнике Windows, что это показывает?
Я бы подумал об использовании для этого внешнего приложения. Попробуйте использовать Sox и просто запустите версию программы, которая выполняется с использованием soxi (без exe), и попробуйте проанализировать этот вывод. Учитывая ваши возможности, я думаю, вам лучше просто довериться кому-то еще, кто потратил время на проработку всех странностей в файлах mp3, если только эта функция не является ключевой для того, что вы делаете. Удачи!
Второй пост в теме может вам помочь: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/c72033c2-c392-4e0e -9993-1f8991acb2fd
Я обернул библиотеку mp3-декодера и сделал ее доступной для разработчиков .net. Вы можете найти его здесь:
http://sourceforge.net/projects/mpg123net/
Включены образцы для преобразования файлов mp3 в PCM и чтения тегов ID3.
Думаю, вы можете использовать его для чтения длительности файла mp3. В худшем случае вы прочитаете все кадры и вычислите продолжительность - файл VBR.
Чтобы точно определить продолжительность mp3, вы ДОЛЖНЫ прочитать все кадры и рассчитать длительность по их суммарной продолжительности. Есть много случаев, когда люди помещают различные «метаданные» в файлы mp3, поэтому, если вы оцениваете по битрейту и размеру файла, вы ошибаетесь.