首页 文章

C#Windows窗体中的WMP在显示GIF后停止播放声音

提问于
浏览
0

我正在制作一个Windows Form应用程序,它应该在播放音乐时播放GIF动画 .

我使用了SoundPlayer,一切都运转良好 . 然后我发现我无法用SoundPlayer播放多个音频文件,这是一个问题(需要背景音乐和效果) .

所以我看了一下DirectSound,但我的应用程序冻结了每次我做任何与DirectSound相关的事情(Device,Buffer ...) .

所以现在我正在尝试WMP,我一开始很开心,但是当我启用GIF(透明,以防它很重要)时,音乐在不到一秒的时间内停止,而你可以看到GIF停止一帧或所以,就像装载重物一样 . 每次音频和GIF同时播放时都会发生这种情况,无论其中一个是否提前启动 . 当我使用SoundPlayer时,我可以一次播放20个动画GIF,对音频没有影响 .

把它们加起来:

SoundPlayer =只有一个音频文件,不可接受

DirectSound =由于某种原因冻结(也许值得再次尝试?我想把这个问题的重点放在WMP上,但我还是失去了代码)

WMP =不能很好地使用动画GIF,这是必需的 .

我试过播放.wav和.mp3文件,没有区别 . 我之前添加了wmp.dll引用 .

using System;
using System.Windows.Forms;
using System.Media;           

private void button2_Click(object sender, EventArgs e)
            {
                var player = new WMPLib.WindowsMediaPlayer();
                player.URL = "song.wav";
                pictureBox1.Visible = true;
            }

我对WMP有什么了解吗?你能推荐一些其他方法吗?当pocess达到某些内存使用时,似乎音频停止了 . 它稳定在大约45 MB,但是一旦我播放音频文件它开始增加,并播放,直到它停止时达到大约48 MB并返回到45 MB .

感谢您抽出宝贵时间以任何方式帮助我 .

编辑:我正在使用分辨率为500x500的GIF图片,我使用SizeMode = StretchImage实际上使它看起来更小(200x200) . 在这种情况下,音乐播放约0.2秒 . 我将资源图片调整为100x100,使用StretchImage使其再次显示为200x200,音乐播放约8秒,如果我一次加载两个GIF则播放约4秒 . 更改.mp3比特率使其仅为170KB并没有任何帮助 . 我的意思是我的谷歌浏览器需要3GB的内存,而且还可以播放多个视频,而我的表格甚至不到50MB而且很难 . 当然必须有一种方式来播放GIF和一首歌 . 是否有某种MemoryAssignLimit属性?或者,当涉及到更大的资源时,WMP是否会失败?它是由WinForms设置的限制吗?

1 回答

  • 0

    按照this解决方案,它就像魅力,各处的GIF和30首重叠的歌曲一样,除非我想要它,否则什么都不会停止 . 大 .

相关问题