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。
我使用这些包
- VideoLAN.LibVLC.Windows(版本 3.0.0)https://www.nuget.org/packages/VideoLAN.LibVLC.Windows
- Vlc.DotNet.Forms(版本 3.0.0)https://github.com/ZeBobo5
这似乎是 libvlc 的一个已知问题 3.x。
解决方法是使用不同的音频输出。在 Vlc.DotNet 中,您可以这样做:
control.VlcMediaplayerOptions = new []{ "--aout=directsound" };
在 control.EndInit();
.
之前
参考文献:
看来之前的答案对我没用,我改用了下面的:
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;
我在我的项目中使用 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。
我使用这些包
- VideoLAN.LibVLC.Windows(版本 3.0.0)https://www.nuget.org/packages/VideoLAN.LibVLC.Windows
- Vlc.DotNet.Forms(版本 3.0.0)https://github.com/ZeBobo5
这似乎是 libvlc 的一个已知问题 3.x。
解决方法是使用不同的音频输出。在 Vlc.DotNet 中,您可以这样做:
control.VlcMediaplayerOptions = new []{ "--aout=directsound" };
在 control.EndInit();
.
参考文献:
看来之前的答案对我没用,我改用了下面的:
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;