Какой аудиокодек должен я выбирать для моего проекта разработки программного обеспечения C#, где необработанное аудио, которое будет транскодироваться/транспортироваться/использоваться, основано на следующем:
Обратите внимание, что, существует ли легко доступная свободная библиотека кодека для выполнения транскодирования, не должен быть учтен.
Speex - это бесплатный кодек с открытым исходным кодом, разработанный для кодирования речи в решениях в реальном времени, требующих малой задержки. Схемы сжатия общего назначения, такие как WMA или MP3, вероятно, вызовут большую задержку, и они также могут не работать должным образом при очень низких битрейтах. http://www.speex.org/
Вы можете использовать LAME для кодирования MP3 с предустановками 'voice'. Я бы порекомендовал протестировать другие, из-за подобных проблем .
MP3 - это то, что KPFA.org (а теперь, я думаю, KQED) используют для потоковой передачи в прямом эфире. Работает отлично. Однако не знаю, какой сервер SW используется.
Если вы ориентируетесь только на Windows, кодек GSM, вероятно, будет хорошим выбором для приложений с низкой пропускной способностью. Обычно считается, что он имеет более низкое качество, чем Speex, но также использует значительно меньшую пропускную способность.
Проигрыватель Windows Media может воспроизводить GSM, а кодировщик является частью Media Foundation в Vista и более поздних версиях (и, предположительно, некоторым Win32 API в XP и более ранних версиях?)
Учитывая ваш выбор языка, если можно предположить, что вы используете Windows, я бы рекомендовал WMA, формат Windows. Все библиотеки будут встроены, и, учитывая все обстоятельства, это очень надежный кодек. Поддерживает все ваши требования и даже больше.
Однако, если вы собираетесь передавать звук на конечную точку Flash, используйте .fla, Flash Audio. Flash определенно оптимизирован для его потребления и, хотя он не так прост в использовании с C#, вы определенно оцените легкость потребления на другом конце.