gpt4 book ai didi

c# - 显示GIF后,C#Windows Form中的WMP停止播放声音

转载 作者:行者123 更新时间:2023-12-03 01:51:32 24 4
gpt4 key购买 nike

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

我使用了SoundPlayer,并且一切正常。然后我发现我无法使用SoundPlayer播放多个音频文件,这是一个问题(需要背景音乐和效果)。

因此,我对DirectSound进行了一些研究,但是每次我执行与DirectSound相关的任何操作(设备,缓冲区...)时,我的应用程序都会冻结。

所以现在我正在尝试WMP,一开始我很高兴,但是当我启用GIF(透明的情况下)时,音乐停止播放的时间不到一秒钟,而您可以看到GIF停止播放一帧或因此,就像它正在加载沉重的东西。每当音频和GIF同时播放时,就会发生这种情况,无论它们中的任何一个是否提前开始。使用SoundPlayer时,我可以一次播放20个动画GIF,而不会影响音频。

把它们加起来:

SoundPlayer =仅一个音频文件, Not Acceptable

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,我应该了解些什么吗?您可以推荐其他方法吗?当处理量达到一定的内存使用量时,音频似乎停止了。它稳定在大约45 MB上,但是一旦我播放音频文件,它就会开始增加,并且播放直到它停止播放并返回到45 MB时达到大约48 MB。

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

编辑:我使用的GIF图片具有500x500的分辨率,我使用SizeMode = StretchImage来使它看起来更小(200x200)。在这种情况下,音乐播放了约0.2秒。我将资源图片的大小调整为100x100,使用StretchImage使其再次显示为200x200,并且音乐播放了大约8秒,如果同时加载两个GIF,则播放了大约4秒。将.mp3比特率更改为仅170KB根本没有帮助。我的意思是我的Google Chrome浏览器占用了3GB的内存,但仍然可以播放多个视频,而我的Form占用的内存甚至不足50MB,而且很费力。当然,必须有一种播放GIF和歌曲的方法。有某种MemoryAssignLimit属性吗?还是WMP在涉及更大的资源时仅仅是失败了?它是WinForms设置的限制吗?

最佳答案

遵循this解决方案,它像魅力一样工作,到处都是GIF和30首重叠的歌曲,除非我希望,否则一切都不会停止。大。

关于c# - 显示GIF后,C#Windows Form中的WMP停止播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39304887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com