Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Я не попробовал его лично (так не уверенный, если это - 'лучшее' решение), но http://www.codeproject.com/KB/audio-video/WmaCompressor.aspx похож на него, должен отвечать Вашим требованиям...
Можно смотреть на библиотеку BASS. Это имеет дополнения, такие как BASSWMA и BASSEnc для того, чтобы сделать кодирование/декодирование. Весь его API доступен от.NET с помощью обертки BASS.Net.
И БАС и BASS.Net могли лицензироваться для коммерческого использования с разумным сбором (100€ каждый).
Если Вы - удобная запись небольшого количества C++ / CLI затем, Вам не нужно много кода для создания обертки вокруг DirectShow, чтобы сделать это. Это можно затем назвать непосредственно от блока C# без потребности иметь предосудительные отношения с interop. Выполнение его с DirectShow намного легче, чем использование WMF непосредственно, потому что Вы не должны делать никакого парсинга файла или ввода-вывода - это все сделано для Вас. Для ссылки у меня есть код в коммерческом приложении, которое может кодировать/декодировать WMA в файлы WAV меньше чем в 100 строках C++, все обернутые в дружественном классе .NET. Разумное использование интеллектуальных указателей помогает при потере работоспособности по этому маршруту...
Вы могли бы посмотреть на www.mitov.com. Существуют некоторые библиотеки там, которые могут помочь. Необходимо будет купить копию для поставки в коммерческом продукте, я верю, но я думаю, что это - разумная цена.