Pergunta

Qual codec de áudio devo escolher para o meu projeto de desenvolvimento de software C#, onde o áudio bruto a ser transcodificado/transportado/usado é baseado no seguinte:

  1. Para codificar apenas o discurso
  2. O áudio pode ser estéreo ou mono
  3. Capaz de apoiar a transmissão ao vivo
  4. Boa troca entre o tamanho do arquivo e a qualidade
  5. A ser transportado sobre TCP/IP em sua forma codificada
  6. Pode ser reproduzido por um jogador gratuito prontamente disponível sem processamento adicional

Observe que se existe uma biblioteca de codec gratuita prontamente disponível para realizar a transcodificação não precisa ser levada em consideração.

Foi útil?

Solução

O Speex é um codec de código aberto gratuito, projetado para codificar a fala em soluções em tempo real que precisam de baixa latência. Os esquemas de compressão de uso geral, como WMA ou MP3, provavelmente causarão mais atrasos e eles também podem não ser capazes de operar bem em taxas de bits muito baixas. http://www.speex.org/

Outras dicas

Uma alternativa mais recente e melhor seria o Codec Opus.

Confira o comparação com outros codecs para ver como ele se sai bem.

Como você mencionou C# para plataforma de destino, tenho que adicionar algo ao resposta aceita. Existe uma porta do codec speex na plataforma .NET em C# puro chamado Nspeex.

Você pode usar coxo para codificação de MP3 com as predefinições de 'voz'. Eu recomendaria testar diferentes, porém, por causa de questões como esta.

MP3 é o que kpfa.org (e agora KQED, eu acho), ambos usam para transmissão ao vivo. Funciona bem. Não sei qual servidor SW é usado.

Dada a sua escolha de linguagem, se for seguro supor que você esteja usando o Windows, eu recomendaria o WMA, o formato do Windows. Todas as bibliotecas serão construídas e, todas as coisas consideradas, são um codec muito sólido. Suporta todas as suas necessidades e muito mais.

No entanto, se você estiver empurrando para um terminal flash, use .fla, flash áudio. O Flash definitivamente otimiza para consumir isso e, embora não seja tão fácil de usar com o C#, você definitivamente apreciará a facilidade de consumo do outro lado.

Se você está segmentando apenas o Windows, o codec GSM é provavelmente uma boa opção para aplicativos de baixa largura de banda. Geralmente é considerado uma qualidade mais baixa que a Speex, mas também usa uma quantidade razoável de largura de banda.

O Windows Media Player pode reproduzir o GSM e o codificador faz parte da Media Foundation no Vista e acima (e presumivelmente alguma API Win32 no XP e abaixo?)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top