Получение длительности аудиофайла C # - PullRequest
1 голос
/ 20 августа 2009

Я пытаюсь получить продолжительность для аудиофайла в c #. Я получил следующий код для работы на моем локальном компьютере, но при развертывании его на Windows Server 2008 box всегда возвращает продолжительность 0 для файлов .avi и .wav.

WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
    IWMPMedia mediaInfo = wmp.newMedia(filePath);
    return mediaInfo.durationString

У меня установлен Windows Media Player 11 на сервере.

Любая помощь будет наиболее ценной

Ответы [ 3 ]

2 голосов
/ 08 октября 2011

Чтобы получить информацию о продолжительности, сначала нужно открыть медиа-файл.

http://msdn.microsoft.com/en-us/library/windows/desktop/dd564790(v=vs.85).aspx#Y656

Чтобы узнать длительность файлов, которых нет в библиотеке пользователя, необходимо дождаться, пока проигрыватель Windows Media откроет файл; то есть текущий OpenState должен равняться MediaOpen . В этом можно убедиться, обработав событие AxWindowsMediaPlayer._WMPOCXEvents_OpenStateChange или периодически проверяя значение AxWindowsMediaPlayer.openState .

Ссылка также содержит примеры кодов для C #.

Если вам не нравится воспроизводить видео, вы можете использовать класс IWMPMedia:

http://johndyer.name/post/Retreiving-the-duration-of-a-WMV-in-C.aspx

2 голосов
/ 20 августа 2009

У меня нет опыта работы с «WindowsMediaPlayerClass», но я широко использовал TagLibSharp, и это то, что я пытаюсь использовать для таких вещей - он поддерживает довольно широкий набор форматов и делает его API гораздо более удобным, чем встроенная поддержка в .NET

http://developer.novell.com/wiki/index.php/TagLib_Sharp

Вполне возможно, что простое использование TagLibSharp решит ваши проблемы.

(Обратите внимание, что taglibsharp поддерживается проектом banshee, но размещается @ novell по очевидным историческим причинам. Я не знаю подробностей, но это может сбить контакт с разработчиками немного запутанно)

1 голос
/ 22 августа 2009

Я предполагаю, что медиаплеер не установлен (по умолчанию он не установлен на SKU сервера).

Вы пытались установить пакет для работы с компьютером?

...