我从Github下载了Vlc.DotNet项目,并一直在为其Sample Samples应用程序添加更多功能。一切正常,除了在事情上:我注意到,每次我启动应用程序并播放音频时,即使将其设置为较低的值,音频听起来也好像是其音量为100%(或附近)。
在播放音频之前,我曾尝试设置音量,但是没有用。如果调试代码,我会看到音量始终设置为-1。
例如,如果我执行以下代码行,则将音量设置为40后,在调试时,音量仍为-1:
myVlcControl.Play(new FileInfo(FileName)); myVlcControl.Audio.Volume = 40;
更改上面各行的顺序也不起作用。
有趣的是,当音频已经在播放并且我更改了音量时,它已成功更改为NumericUpDown上的选择值。下面的代码是发生这种情况的事件:
private void numericUpDown1_ValueChanged(object sender, EventArgs e) { myVlcControl.Audio.Volume = (int)numericUpDown1.Value; }
我已经尝试解决此问题两天了。不幸的是,我的编码技能甚至没有使这个项目的幕后人员离开。我已经在Github的“问题”页面上发布了此问题,但是由于自11月以来仍然有一些问题没有得到答复,因此我决定尝试使用StackOverflow。希望这里有人使用Vlc.DotNet并为我的问题提供了解决方案。
话虽如此:
有人有同样的问题吗?
有人知道如何解决吗?
有什么建议么?
谢谢!
[2016年1月8日,格林尼治标准时间2上午11:50编辑]
Github上的higankanshi用户回答了我以下问题:
我发现了问题。您应该使用LibVlc 2.2.0(或更高版本)。Vlc.DotNet使用的是LibVlc 2.1.5
然后,我执行了一些测试,并得出以下结论:
你是对的。使用LibVlc 2.2.0,我可以在播放之前设置音量。
不幸的是,由于某些原因,在播放音频之前设置音量仅在首次打开应用程序时起作用。停止音频,更改音量并再次播放之后,音量不再更改-仅在播放时更改。
以下是产生结果的步骤:
执行应用程序;
在播放音频文件之前在运行时更改音量;
播放音频文件;
结果:音频以指定的音量成功播放!=)
按停止;
再次更改音量;
再次按Play(此时,play方法内的实现应获取新的音量信息);
结果:音频再次以之前播放的音量播放。设置音量不再有效。
我正在Vlc.DotNet.Forms.Samples-CLR 4-.Net 4.5项目上进行测试。我对该项目所做的更改是:
添加了NumericUpDown控件,以便我可以在运行时更改音量;
将ValueChanged事件与NumericUpDown控件相关联,以便每次更改值时,新值都将传递给VlcControl;
创建了一个Play()函数,该函数始终在播放音频之前获取最后的音量值;
我的代码如下:
private void numericUpDown1_ValueChanged(object sender, EventArgs e) { myVlcControl.Audio.Volume = (int)numericUpDown1.Value; } private void Play() { myVlcControl.Audio.Volume = (int)numericUpDown1.Value; myVlcControl.Play(new FileInfo(FileName)); } private void OnButtonPlayClicked(object sender, EventArgs e) { Play(); } private void OnButtonStopClicked(object sender, EventArgs e) { myVlcControl.Stop(); } private void OnButtonPauseClicked(object sender, EventArgs e) { myVlcControl.Pause(); }
有任何想法吗?