Вопрос

Кто-нибудь знает, как передавать файлы 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))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top