[英]How to convert mp3 stream to wav stream in Silverlight
最近,我一直在研究如何在Silverlight應用程序中播放音樂,這就是我現在面臨的情況:
(1)我可以使用MediaElement
,但一次只能播放一個音樂文件,因為我無法在項目中使用用戶控件,所以這可能不是解決方案。
(2)我可以使用SoundEffect ,但它僅支持wav文件,即使中等質量的文件也很大。
由於我想同時播放多個音樂文件並控制是否循環播放,因此我認為后一種可能是我的解決方案。
我沒有在項目中放入音樂文件(因此Load<Song>
函數對我不起作用),而是將它們放入數據庫中,在獲得所有字節后便可以播放它,如下所示代碼片段:
MemoryStream stream = new MemoryStream(bytes);
SoundEffect sound = SoundEffect.FromStream(stream);
SoundEffectInstance soundInstance = sound.CreateInstance();
if (loopValue.Number == 1.0) soundInstance.IsLooped = true;
soundInstance.Play();
這對wav文件很好用,但是當我用它播放mp3文件時如果拋出異常:
System.Exception: 對 COM 組件的調用返回了錯誤 HRESULT E_FAIL。
位於 Microsoft.Xna.Framework.Audio.XcpImports.CheckHResult(UInt32 hr)
位於 Microsoft.Xna.Framework.Audio.XcpImports.SoundEffect_LoadWavFromStream(SoundEffect soundEffect, Stream stream)
位於 Microsoft.Xna.Framework.Audio.SoundEffect.FromStream(Stream stream)
....
我沒有找到任何可以在Silverlight平台中直接將mp3轉換為wav的庫,我不太了解SoundEffect的內部,因此沒有人可以告訴我如何將mp3字節流轉換為wav,因此SoundEffect可以工作嗎?
順便說一句,由於性能問題,我不會使用wcf服務發送字節,並在托管的Web應用程序中將其轉換,這會給服務器帶來很大壓力,因此像NAudio這樣的庫可能無濟於事。
因此,對於這個難題的任何有效解決方案,我都會感謝您的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.