0

有谁知道如何流式传输 Ogg 文件而无需首先通过 Socket(字节 [] 格式)完全下载它们。

我正在尝试创建一个音乐流媒体应用程序,并且我设法使用 MP3 来做到这一点,但我知道在一定限​​制之后存在许可问题,因此我想使用 OGG(Vorbis)。我设法找到了这个 C# Vorbis Wrapper但没有文档,而且我无法弄清楚如何让 byte[] 流播放。

我试过以下

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

但是会抛出一个异常,表明 Wav 文件头不正确。我了解 SoundPlayer 仅用于播放 .wav 文件?有人知道如何流式传输 OGG 文件吗?

4

2 回答 2

3

包装器是一个非常薄的,它直接调用原生的 ogg 编解码器函数。查找 ov_read 的文档以查看您从 OggVorbisEncodedStream.Read() 获得的信息。原始 PCM 将是我的猜测。包装器不会尝试任何类型的格式转换。

是的,SoundPlayer 在这里不起作用,它需要 wav 并且不能流式传输。您需要一个可以将 PCM 块作为输入的播放器。不知道那是什么,NAudio 项目通常适合这样的东西。

于 2010-03-31T17:16:09.947 回答
1
string filePath = "License.lic";

using (var stream = new StreamReader(filePath))
于 2015-06-04T14:53:11.350 回答