views:

123

answers:

1

Does anyone know how to stream Ogg files without fully downloading them first over a Socket(in byte[] format).

I am trying to create a music streaming application and I managed to do it with MP3's but I understand there's licensing issues invovled after certain limit hence why I want to use OGG(Vorbis). I maanged to find this C# Vorbis Wrapper but no documentation, and I cannot figure out how to get a byte[] stream to play.

I have tried the following

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

But an exception gets thrown showing that the Wav file header is incorrect. I understand SoundPlayer is used for only playing .wav files? Does anybody know how to stream a OGG file?

+1  A: 

The wrapper is a very thin one, it directly calls the native ogg codec functions. Look for the docs of ov_read to see what you get back from OggVorbisEncodedStream.Read(). Raw PCM would be my guess. The wrapper doesn't attempt any kind of format conversion.

Yes, SoundPlayer won't work here, it requires wav and can't stream. You'll need a player that can take chunks of PCM as an input. Not sure what does that, the NAudio project is usually good for stuff like this.

Hans Passant