Pergunta

Alguém sabe como transmitir arquivos OGG sem baixá -los totalmente primeiro sobre um soquete (no formato byte []).

Estou tentando criar um aplicativo de streaming de música e consegui fazê -lo com MP3, mas entendo que há problemas de licenciamento invocados após um certo limite, portanto, por que eu quero usar o OGG (Vorbis). Eu fiz uma mata para encontrar Este invólucro C# vorbis Mas nenhuma documentação, e não consigo descobrir como obter um stream de byte [] para reproduzir.

Eu tentei o seguinte

        var rawData = File.ReadAllBytes(@"SoundFile.ogg");
        var enc = new OggVorbisEncodedStream(rawData);
        var sp = new SoundPlayer(enc);
        sp.Play();

Mas uma exceção é lançada mostrando que o cabeçalho do arquivo WAV está incorreto. Eu entendo que o SoundPlayer é usado para reproduzir apenas arquivos .wav? Alguém sabe como transmitir um arquivo OGG?

Foi útil?

Solução

O invólucro é muito fino, chama diretamente as funções nativas do codec OGG. Procure os documentos do ov_read para ver o que você recebe de OggVorbisEncodedStream.read (). PCM cru seria meu palpite. O invólucro não tenta nenhum tipo de conversão de formato.

Sim, o SoundPlayer não funciona aqui, requer WAV e não pode transmitir. Você precisará de um jogador que possa tomar pedaços de PCM como entrada. Não tenho certeza do que faz isso, o Projeto Naudio Geralmente é bom para coisas como essa.

Outras dicas

string filePath = "License.lic";

using (var stream = new StreamReader(filePath))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top