C# 如何使用DirectSound从流播放MP3

C# 如何使用DirectSound从流播放MP3,c#,audio,mp3,playback,directsound,C#,Audio,Mp3,Playback,Directsound,我正在编写一个程序,在某个时候下载一个MP3并将其存储到一个字节数组中。然后我从字节创建流 不知道如何播放流。除了DirectSound,我不想使用任何DLL 有没有更好的方法来播放流?(不是另一个dll) 如果是,如何进行?如果没有,如何通过DirectSound播放流?这似乎是不可能的。请参阅类似文件中的引用: 原始DirectSound无法播放mp3压缩音频。我建议为此使用DirectShow,因为它支持多种格式。您也可以使用流式dsound缓冲区,并自己进行解压缩,但在您的情况下,这可能

我正在编写一个程序,在某个时候下载一个MP3并将其存储到一个字节数组中。然后我从字节创建流

不知道如何播放流。除了DirectSound,我不想使用任何DLL

有没有更好的方法来播放流?(不是另一个dll)


如果是,如何进行?如果没有,如何通过DirectSound播放流?

这似乎是不可能的。请参阅类似文件中的引用:

原始DirectSound无法播放mp3压缩音频。我建议为此使用DirectShow,因为它支持多种格式。您也可以使用流式dsound缓冲区,并自己进行解压缩,但在您的情况下,这可能有点过头了

请注意,我不建议在任何情况下在项目中使用mp3,因为它不是免版税的格式。Ogg Vorbis是一个很好的选择


Mp3不是免版税的,因此如果没有第三方库,您将很难做到这一点,即使如此,也不推荐使用它。

如果DirectSound可以播放Mp3,我会非常惊讶。您需要一些东西将MP3转换为DirectSound可以处理的流。这里有一个MSDN链接,支持我的comment@MichaelCoxon那么你推荐什么方法呢?应该有一个标准/通用的方法来实现这一点。我以前使用过DirectShow(在VB6上),它可以很好地处理来自文件的MP3。你觉得使用DirectShow怎么样?不用担心版税自由-Windows中有一个股票解码器。但是DirectSound本身不会解压,也不会接受原始MP3,所以这应该通过使用其他API来解决。@daniel casserly不幸的是,我不能使用其他格式。我的应用程序通过SpotifyWebAPI下载30秒的MP3,所以我对此没有任何改变。@RomanR。你认为还有哪些API适合我?我以前在MP3文件上使用过DirectShow(带VB6)。RAMTINSOLTANI:MP3解码器可在ACM编解码器的形式因子,DirectShow过滤器,媒体基础也嵌入到Windows媒体格式API中。如果您决定将字节流存储在内存中,那么ACM codec可能是最适合您的(即使您需要从C#code与之进行接口)。DirectShow很好,但是要从内存中进行流式处理,您需要一个定制的过滤器,而不是现成的。