Кодирование звука (в AAC) в Silverlight 4 (на клиенте)?

Хорошо, поэтому Silverlight 4 добавляет поддержка захвата с микрофонов (и веб-камер), однако, чтобы эта возможность была полезной (по крайней мере, в моем случае), мне нужно было бы загрузить эти захваченные данные на сервер для сохранения .

AudioCaptureDevice будет записывать звук в формате PCM на клиенте, и, как мы все знаем, PCM - не самое эффективное кодирование ... данные были бы слишком большими для загрузки в несжатом виде.

В идеале я мог бы закодировать этот поток PCM в AAC прямо на клиенте, а затем загрузить этот сжатый поток на сервер.

Может быть полезно что-то вроде этой библиотеки. Однако он не поддерживает AAC.

(Я выбираю AAC, потому что (в отличие от MP3) он бесплатен для кодирования и поддерживается популярными устройствами PMP.)

Есть какие-нибудь мысли о том, как лучше всего этого добиться? На столе есть все варианты: полное доверие, Google Gears и т. Д.

Спасибо за любую помощь!


person Bobby    schedule 11.02.2010    source источник


Ответы (4)


Есть аудиокодек под названием Speex, и Олден Торрес перенес алгоритм SPEEX на C #. Итак, у вас есть полностью управляемый аудиокодер. Вот соответствующая запись в блоге где он показывает, как кодировать звук с микрофона с помощью SPEEX. Читайте также комментарии.

person Rene Schulte    schedule 11.02.2010
comment
вау, отличная ссылка - Google по какой-то причине не вернулся с этим во время моего исследования: p К сожалению, он не упоминает AAC - я действительно хочу, чтобы этому формату уделялось больше внимания - MP3 запатентован и не может кодировать (юридически) бесплатно - AAC поддерживается iPod и Zune и является совершенно бесплатным (и есть бесплатные кодировщики). Эта ссылка помогает, спасибо! - person Bobby; 12.02.2010

Как упоминалось выше, Speex - это голосовой кодек, который не совсем подходит, если вы хотите использовать его для музыки. Однако, если вас все еще интересует Speex на Silverlight, вам следует взглянуть на NSpeex, который является портом более ранняя версия Speex на C #, а также предлагает библиотеку Silverlight.

person balistof    schedule 09.11.2010

Мне нужно записать музыку в Silverlight (например, из линейного входа) и сохранить ее на сервере. Он должен быть хорошего качества (не как SPEEX). Попробую на клиенте поставить хромой кодировщик. Ему нужна lame_enc.dll, к которой можно получить доступ с помощью p-invoke. Я проверю, возможно ли это с помощью silverlight. Вы знаете альтернативы? Может быть, хороший стриминговый сервер (можно ли с wowza)?

person Alexander Zwitbaum    schedule 19.04.2010
comment
забавно, что вы упомянули об этом, потому что я все еще ищу разумное решение. Проблема в том, что MSFT действительно бросает мяч здесь - я ждал SL4 RTM (произошедшего на прошлой неделе), надеясь, что они представят решение для кодирования A / V вместе с поддержкой микрофона / веб-камеры ... похоже, что они этого не сделали . Если вы хотите использовать LAME или какой-либо другой неуправляемый кодировщик, вам нужно выйти из браузера и повысить доверие, что требует многого от ваших пользователей. Нам нужен управляемый кодировщик AAC (AAC вместо MP3, потому что вы должны платить за кодирование MP3, AAC бесплатный и поддерживается iPod и т. Д.) - person Bobby; 19.04.2010

Вы должны знать, что кодирование AAC также запрещено патентом. Прочтите об этом статью в Википедии. Если вам нужен свободный формат, вам следует заглянуть в Vorbis или FLAC (или Speex).

Если вы используете Windows 7 или Server 2008 R2, вы можете использовать SDK для кодирования AAC (http://msdn.microsoft.com/en-us/library/dd742785(v=VS.85) .aspx).

Кроме того, поскольку вы все равно заставляете клиента выполнять кучу работы, почему бы просто не заархивировать его перед загрузкой - я не человек Silverlight, так что, может быть, это невозможно?

person Brad    schedule 03.12.2010