C#函数,用于播放base64编码的mp3文件
我正在尝试创建一个函数C#函数,用于播放base64编码的mp3文件,c#,audio,base64,mp3,.net-4.5,C#,Audio,Base64,Mp3,.net 4.5,我正在尝试创建一个函数PlaySoud,该函数接受mp3文件作为base64编码字符串,并使用System.Media.SoundPlayer播放它 static void Main(string[] args) { var audioBytes = File.ReadAllBytes(@"PATH-TO-FILE"); var base64String = Convert.ToBase64String(audioBytes); P
PlaySoud
,该函数接受mp3文件作为base64编码字符串,并使用System.Media.SoundPlayer
播放它
static void Main(string[] args)
{
var audioBytes = File.ReadAllBytes(@"PATH-TO-FILE");
var base64String = Convert.ToBase64String(audioBytes);
PlaySoud(base64String);
}
static void PlaySoud(string base64String)
{
var audioBuffer = Convert.FromBase64String(base64String);
using (var ms = new MemoryStream(audioBuffer))
{
var player = new System.Media.SoundPlayer(ms);
player.Play();
}
}
我当前在player.Play()
行上遇到一个异常,说明波头已损坏
堆栈跟踪
位于System.Media.SoundPlayer.ValidateSoundData(字节[]数据)
在System.Media.SoundPlayer.LoadAndPlay(Int32标志)上
在System.Media.SoundPlayer.Play()中
在c:\Users\user\Documents\visualstudio 2013\Projects\POC\POC\Program.cs中的POC.Program.PlaySoud(字符串base64String)处:第21行
位于c:\Users\user\Documents\visualstudio 2013\Projects\POC\POC\Program.cs中的POC.Program.Main(字符串[]args):第12行
位于System.AppDomain.\u nExecuteAssembly(RuntimeAssembly程序集,字符串[]args)
位于System.AppDomain.ExecuteAssembly(字符串汇编文件、证据汇编安全性、字符串[]args)
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()上
位于System.Threading.ThreadHelper.ThreadStart\u上下文(对象状态)
位于System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext、ContextCallback回调、对象状态、布尔值preserveSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔保存SyncCTX)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态)
位于System.Threading.ThreadHelper.ThreadStart()处
MSDN关于此错误的大多数讨论都指向将流位置重置为0
,但没有帮助
您能告诉我
PlaySound
功能有什么问题吗?我编码或解码mp3文件的方式是否有问题?SoundPlayer类只能播放.wav文件。-
您可以在应用程序中使用WindowsMediaPlayer来播放.mp3文件以及许多其他格式。只要添加正确的参考资料,您就可以开始了
更新:如果需要从流播放mp3,请参阅。或者,您也可以创建一个临时文件并播放该文件。您的代码没有立即出现任何问题-很可能是“wave头已损坏”-从播放非WAV文件(即MP3)的意义上讲。如果你真的尝试播放MP3(根据你的帖子,情况似乎是这样),那么当所有文章都有相反的建议时,你尝试使用
SoundPlayer
是非常奇怪的。编码/解码没有问题。SoundPlayer类只接受.wav文件我的坏!我确实在尝试使用SoundPlayer
播放*.mp3
文件(但是WMPLib
是否支持从流播放(我不这么认为)?我实际上想播放base64
编码的mp3文件?
WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.URL = "My MP3 file.mp3";
wplayer.controls.play();