C# Vlc Forms音量稳定化问题

C# Vlc Forms volume stabilization problem

我在我的项目中使用 Vlc.DotNet.Forms 包。我在表格上打开一个视频。一切都好。但是如果我想再次打开视频。当我改变音量时,两个视频的音量都会改变。

我的代码示例:


     public VlcControl control;
     public void Player(string url,int volume){         
            this.control = new VlcControl();
            var currentAssembly = Assembly.GetEntryAssembly();
            var currentDirectory = new FileInfo(currentAssembly.Location).DirectoryName;
            var libDirectory = new DirectoryInfo(Path.Combine(currentDirectory, "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));
            control.BeginInit();
            control.VlcLibDirectory = libDirectory;
            control.Dock = DockStyle.Fill;
            control.EndInit();
            this.Controls.Add(control);
            control.SetMedia(new Uri(@"" + url + ""));
            control.Audio.Volume=volume;
            control.Play();
            }

例如,

    Player("C:\test\video1.mp4",50);
    Player("C:\test\video2.mp4",75);

第一个视频打开,音量变成50。然后我打开第二个视频,两个视频的音量都是75。

我使用这些包

这似乎是 libvlc 的一个已知问题 3.x。

解决方法是使用不同的音频输出。在 Vlc.DotNet 中,您可以这样做:

control.VlcMediaplayerOptions = new []{ "--aout=directsound" };

control.EndInit();.

之前

参考文献:

https://forum.videolan.org/viewtopic.php?t=147229

https://github.com/ZeBobo5/Vlc.DotNet/issues/524

看来之前的答案对我没用,我改用了下面的:

vlcControl.Play();
var directsound = vlcControl.Audio.Outputs.All.FirstOrDefault(x => x.Name == "directsound");
if (directsound != null)
{
    vlcControl.Audio.Outputs.Current = directsound;
    vlcControl.Audio.IsMute = true;
}

在启动播放器后立即设置直接声音。 然后你可以切换静音:

vlcControl.Audio.ToggleMute();

设置音量类似于:

vlcControl.Audio.Volume = 50;