Pergunta

Eu estou procurando um multi-plataforma (.Net e Mono no Windows, MacOSX e Linux) maneira de wav decodificar, mp3 ou ogg tais que eu possa, em seguida, jogar os fluxos decodificados através DirectSound ou OpenAL como desejado.

Uma solução que pode decodificar qualquer mp3 ou ogg seria suficiente - decodificação tanto não é necessário. Se ele (ou outra solução) pode decodificar wav também, que seria o ideal, mas não é estritamente necessário desde que eu poderia converter meus arquivos wav para mp3 ou ogg.

Uma solução que só pode arquivos WAV decodificação é apenas uma solução parcial, mas eu vou levar o que eu posso começar. ; -)

Aqui está o que eu já olhei:

  • DirectSound e Alut tanto apoio WAV decodificação, mas Alut foi substituído.
  • ffmpeg irá decodificar praticamente qualquer coisa, mas não parecem ter uma versão estável comum em todas as plataformas?
  • Eu não tentei csvorbis ainda, mas é muito antiga e eu não tenho certeza do que seu status atual.

Você é mais que bem-vindo para tentar me pursuade que uma dessas soluções acima é realmente a melhor opção.

Graças.

Foi útil?

Solução

Para suporte simples para arquivos WAV que você pode olhar para a implementação do mono em mcs / classe / System / System.Media / AudioData.cs ( http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/System/System.Media/ ) .

Para decodificar ogg arquivos de áudio que você pode olhar para o csvorbis módulo no servidor sn do mono: http://anonsvn.mono-project.com/viewvc/trunk/csvorbis/

Outras dicas

Você não mencionou o tipo de licenciamento que você está procurando. Eu tive excelentes resultados com FMOD , que está disponível gratuitamente para fins não comerciais projetos. Ela desempenha uma grande variedade de formatos, incluindo ogg e mp3, e tem uma extensa API para controlar como jogá-los. É multi-plataforma, como você precisar.

FMOD alvo jogos em grande medida; Eu não ficaria surpreso se ele já vem com excelentes recursos 3D (embora eu não sei ao certo).

Como você pode dizer que eu sou muito fã, que é principalmente porque ele foi surpreendentemente indolor para obter um projeto em branco C # para reproduzir um arquivo OGG pela primeira vez.

Você deve ser capaz de reproduzir arquivos .wav diretamente com System.Media.SoundPlayer. Não tenho certeza se isso ajuda o seu caso de uso.

Eu trabalhei com ffmpeg e até agora eu gosto. Sim, existem alguns problemas em todo lançamentos, mas é o mais eficiente de todos.

Para responder parcialmente a minha própria pergunta, verifica-se que é muito fácil de escrever o seu próprio carregador de WAV. Eu usei este artigo que descreve o formato de arquivo WAV:

http://www.sonicspot.com/guide/wavefiles.html

como sempre, fmod é sua resposta ... sinta-se livre para obter solução para todos os seus problemas em http://www.fmod.org /index.php/download#FMODExProgrammersAPI

https://sites.google.com/site/cobnut3d/

SlimDX.DirectSound -. É um exemplo de código para C #

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