Преобразование WAV в WMA с помощью .NET

Какое лучшее решение для преобразования файлов WAV в WMA (и наоборот) на С#? На самом деле я реализовал это уже однажды, используя SDK Windows Media Encoder, но необходимость распространять Windows Media Encoder с моим приложением, мягко говоря, обременительна. В SDK Windows Media Format большие разделы API помечены как устаревшие. Похоже, что могут быть некоторые медиа-объекты DirectX (DMO), которые я мог бы использовать из Windows SDK, но для написания потребуется очень много взаимодействия.

Мне интересно, есть ли хорошая управляемая оболочка для неуправляемой библиотеки, которая может выполнять преобразования. Для этого потребуется лицензия, позволяющая распространять его как часть коммерческого приложения с закрытым исходным кодом.


person Mark Heath    schedule 15.09.2008    source источник
comment
Есть ли у вас примеры преобразования wma в wav? Все образцы, которые я видел, были преобразованы только из wav в wma.   -  person Peter Walke    schedule 20.12.2008


Ответы (5)


Я не пробовал это лично (поэтому не уверен, что это «лучшее» решение), но http://www.codeproject.com/KB/audio-video/WmaCompressor.aspx похоже, что он должен соответствовать вашим требованиям...

person mdb    schedule 15.09.2008
comment
да, я думаю, что это самое перспективное решение, доступное на данный момент. Тот же автор также сделал порт C# для Windows Media Format SDK. Меня беспокоит только то, что очень неясно, можно ли использовать код в коммерческом проекте. - person Mark Heath; 17.09.2008

Вы можете ознакомиться с библиотекой BASS. У него есть надстройки, такие как BASSWMA и BASSEnc для кодирования/декодирования. Все его API доступны из .NET с помощью оболочки BASS.Net.

И BASS, и BASS.Net могут быть лицензированы для коммерческого использования за разумную плату (100 евро за штуку).

person Magnus Johansson    schedule 18.09.2008

Если вам удобно писать на C++/CLI, вам не нужно много кода для создания оболочки вокруг DirectShow. Затем это можно вызвать непосредственно из сборки C# без необходимости возиться с взаимодействием. Делать это с DirectShow намного проще, чем напрямую с WMF, потому что вам не нужно выполнять какой-либо анализ файлов или ввод-вывод — все делается за вас. Для справки, у меня есть код в коммерческом приложении, которое может кодировать/декодировать WMA в/из файлов WAV менее чем в 100 строк C++, и все они заключены в дружественный класс .Net. Разумное использование интеллектуальных указателей поможет, если вы пойдете по этому пути...

person Stu Mackellar    schedule 17.10.2008

Прежде всего, посмотрите на это:

http://windowsmedianet.sourceforge.net/

Затем найдите IWMWritter и различные способы его инициализации. Вы предоставите необработанные данные PCM, и он запишет файл wma.

Отметьте мой ответ, пожалуйста, для получения дополнительной информации об этом.

person Daniel Mošmondor    schedule 02.09.2010

Вы можете посмотреть на www.mitov.com. Там есть некоторые библиотеки, которые могут помочь. Я полагаю, что вам нужно будет купить копию для выпуска коммерческого продукта, но я думаю, что это разумная цена.

person GuyWithDogs    schedule 20.10.2008