2009-11-23 1 views
6

Microsoft Silverlight 4 находится в стадии бета-тестирования. Он поддерживает аудиовыход PCM. Было бы безумием передавать PCM через Интернет (например, в P2P-диаграмме webApp), поэтому нам нужен Pure C# с открытым исходным кодом PCM в Mp3-конвертер. Нет неуправляемого кода, ничего не выходит из .net-песочницы.Pure C# с открытым исходным кодом PCM в Mp3-конвертер?

Значит ли кто-нибудь такой Pure C# с открытым исходным кодом PCM в Mp3-конвертер?

Что мне нужно:

  • Open Source Libs для кодирования.
  • Учебники и статьи блога о том, как это сделать, о и т.д.

КСТАТИ: почему Pure C#? - потому что Silverlight 4 не поддерживает неуправляемые или просто не C# DLL.

+0

Может быть полезно описать ваш прецедент немного больше. Зачем нужна чистая реализация C#? –

+0

Поскольку Silverlight 4 не поддерживает неуправляемые не C# DLL ( – Rella

+0

Если сервер создает mp3s, это ограничение не применяется. –

ответ

-1

mp3 не является бесплатным кодеком. Попробуйте найти Ogg вместо этого, у вас есть лучшие шансы найти открытый исходный код там.

Также кодеки переведены редко в управляемый код, потому что им нужна высокая эффективность, так как это задача с интенсивным процессором, поэтому переход к родной DLL будет намного быстрее. (для разных уровней партии). Если вы нашли то, что ищете, это будет медленным и, вероятно, нарушением авторских прав fraunhofer.

Через две секунды на Google показывает пример C# использовать родной DLL mp3 кодер: http://www.codeproject.com/KB/audio-video/MP3Compressor.aspx

Три секунды в Google, не дали каких-либо Ogg кодеров. В управляемом коде эти вещи редки.

+0

Ваши выводы являются post-hoc propter-hoc: более вероятная причина, по которой управляемые интерфейсы для существующей неуправляемой DLL - это то, что неуправляемая dll уже существует и ее легко вызвать. «Свободная» проблема также более запутана, чем просто бесплатная/не бесплатная (wikipedia: http://en.wikipedia.org/wiki/MP3#Licensing_and_patent_issues), и она интерпретируется тем, что для открытого кода нет патентной проблемы. – plinth

+0

В контексте веб-программирования (Silverlight 4) мы не можем использовать DLL-файлы. Вопрос несколько раз говорит о том, что вызов в библиотеки невозможен, и нам нужно решение Pure C#. – Karl

+0

вы должны упомянуть, что поддерживаемый MP3Compressor не работает на 64-битных хостах. поэтому вам нужно получить 64-битную хрому от http://lame.bakerweb.biz/ и написать обертку с 32-битным детектированием ala 'IntPtr.Size == 4' :) –

0

Вы уверены, что требуется чистая реализация C#? Вы могли бы просто wrap the lame.dll и использовать это вместо этого. Если вы захватываете звук в прямом эфире, а затем передаете его в виде mp3, то может помочь this link.

Другое дело, я думаю, что MP3 не является вашим единственным вариантом для потоковой передачи. Silverlight должен поддерживать WMA, и это должно быть a pure C# way.

Вот ссылка на tutorial project, которая транслирует mp3.

+0

> ссылка на учебный проект, который передает потоки mp3. стример играет, он не кодируется! ( – Rella

+0

Вы указали в своем другом вопросе (http://stackoverflow.com/questions/1781741/pure-c-open-source-pcm-to-ogg-convertor), что Silverlight doesn Поддерживает неуправляемые DLL. Silverlight - это технология на стороне клиента, а проект учебника показывает, что он поддерживает MP3. Следовательно, не имеет значения, каким образом вы получаете PCM в MP3 на сервере, управляемом или неуправляемом. –

+0

Silverlight уверенно не может вызывать родные DLL. Если бы это было возможно, это был бы один из ошибок безопасности. –

0

Оно не существует до сих пор, и это было бы slowwer, чем неуправляемый код, но вы можете попробовать преобразовать Java Ogg кодер http://downloads.xiph.org/releases/vorbis-java для скайп-аудио, как solation

0

Если вы хотите, чтобы кодировать звук высокого качества музыки уровня в Silverlight, я думаю, вам может быть не повезло, пока кто-то не портирует кодер Ogg Vorbis. Но если вам просто нужно сделать голос, есть разумный порт видео кодека Speex на чистый (Silverlight) C#, называемый CSpeex, отправленный here. Это (в основном автоматизированный) порт C# порта Java версии 2003 года кодека Speex, но я заработал. И, конечно же, это лишь часть решения для потоковой передачи звука на сервер (и вниз), но это, возможно, самая сложная часть.

Никакой радости для любого эхоподавления C#, однако. , , пока кто-то не храбр и порты библиотеки Speex DSP на C# :-).