В настоящее время я пытаюсь написать аудиоплеер на C#. Я использую библиотеку BASS для работы с музыкой, но теперь у меня есть небольшая проблема с получением длины песни.Получение длины mp3-файла
Ну я прочитал BASS документ и нашел способ: «Все» мне нужно сделать, это
int stream = Bass.BASS_StreamCreateFile(filepath,....);
int length = Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream));
И в большинстве случаев я получить действительную длину песни. И здесь проблема начинается. Насколько я знаю, операция создания потока довольно дорога (исправьте меня, если я ошибаюсь), и создание потока только для того, чтобы длина песни выглядела немного глупо.
Итак, мой вопрос: есть ли другой способ получить его, не создавая паровой файл (не так дорого). В дальнейшем я буду думать о чтении тегов id3. Создает ли этот поток «зло, которое должно быть сделано независимо от того, что», и даже если я попытаюсь получить его с другой библиотекой, он будет делать то же самое?
Ну а это liblary делать что-то другое, то я написал в коде ? – user2184057
Это должно быть намного дешевле. – paqogomez
Маленькая точка, Media.Duration находится в 100nS, а не наносекундах, поэтому ее TimeSpan timeSpan = новый TimeSpan (0,0,0, (int) (наносекунды/10000000)); https://msdn.microsoft.com/en-us/library/windows/desktop/bb787399(v=vs.85).aspx – Vman