2015-04-17 144 views
0

我正在編寫一個程序,該程序在某個時刻下載MP3並將其存儲到字節數組中。然後我從字節創建Stream。如何使用DirectSound從Stream播放MP3

不知道如何播放流。我不想使用除DirectSound之外的任何dll。

有沒有更好的方法來播放流? (不是另一個DLL)

如果是,如何?如果不是,如何通過DirectSound播放Stream?

+2

如果DirectSound可以播放MP3,我會非常驚訝。您將需要將MP3轉換爲DirectSound可以處理的流。 –

+0

https://social.msdn.microsoft.com/Forums/en-US/b38936aa-da3a-4deb-8cf2-a890e89ac674/how-do-you-play-mp3s-in-directsound?forum=gametechnologiesdirectx101這裏是一個MSDN鏈接,支持我的評論 –

+0

@MichaelCoxon那麼你推薦什麼方法?應該有一個標準/通用的方法來做到這一點。 我已經在DirectShow之前(在VB6上)工作過,並且它能很好地處理來自文件的MP3。您對使用DirectShow有什麼看法? –

回答

0

看來這是不可能的。請參見類似的報價MSDN forum post

Raw DirectSound不能播放mp3壓縮音頻。我建議使用DirectShow來達到這個目的,因爲它支持多種格式。你也可以使用流式緩衝緩衝區並自己進行解壓縮,但這可能在你的情況下是過度的。

請注意,我不建議在您的項目中使用mp3,因爲它不是免版稅的格式。 Ogg Vorbis是一個很好的選擇。

Mp3沒有版稅免費,所以你會努力做到這一點,沒有第三方庫,甚至所以不建議。

+0

不用擔心版稅自由 - Windows中有一個股票解碼器。但是,DirectSound不會自行解壓,並且不會接受原始MP3,所以這應該通過使用其他API來解決。 –

+0

@ daniel-casserly不幸的是我不能使用其他格式。我的應用程序通過Spotify Web API下載30秒MP3,所以我無法改變它。 –

+0

@RomanR。你認爲還有哪些API會對我有用? 我已經使用DirectShow之前(與VB6)MP3文件。它會與流一起工作嗎? –