C#Windows窗体中的WMP在显示GIF

时间:2016-09-03 08:31:06

标签: c# winforms audio gif wmp

我正在制作一个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 :(得分:0)

跟随this解决方案,它就像魅力一样,到处都是GIF,还有30首重叠的歌曲,除非我想要它,否则什么都不会停止。大。