Потоковый файл Ogg
Вопрос
Кто-нибудь знает, как передавать файлы Ogg в потоковом режиме без их полной загрузки сначала через сокет (в формате byte[]).
Я пытаюсь создать приложение для потоковой передачи музыки, и мне удалось сделать это с MP3, но я понимаю, что после определенного предела возникают проблемы с лицензированием, поэтому я хочу использовать OGG (Vorbis).Я пытался найти эта Оболочка C # Vorbis но документации нет, и я не могу понять, как заставить поток byte[] воспроизводиться.
Я попробовал следующее
var rawData = File.ReadAllBytes(@"SoundFile.ogg");
var enc = new OggVorbisEncodedStream(rawData);
var sp = new SoundPlayer(enc);
sp.Play();
Но выдается исключение, показывающее, что заголовок файла Wav неверен.Я так понимаю, SoundPlayer используется только для воспроизведения файлов .wav?Кто-нибудь знает, как передавать в потоковом режиме файл OGG?
Решение
Оболочка очень тонкая, она напрямую вызывает собственные функции кодека ogg.Поищите документы ov_read, чтобы увидеть, что вы получите в ответ от OggVorbisEncodedStream.Read() .Я бы предположил, что необработанный PCM.Оболочка не пытается выполнить какое-либо преобразование формата.
Да, SoundPlayer здесь не будет работать, он требует wav и не может транслироваться.Вам понадобится проигрыватель, который может принимать фрагменты PCM в качестве входных данных.Не уверен, что это делает, тот Проект NAudio обычно это хорошо для подобных вещей.
Другие советы
string filePath = "License.lic";
using (var stream = new StreamReader(filePath))