LibvclSharp winforms转到特定时间

时间:2019-12-19 11:38:29

标签: c# winforms libvlcsharp

我正在使用libvclsharp包装器组装一个winforms应用程序。 这是一个基本应用,可承载4个VideoView窗口并播放4个不同的mp4视频。

它可以正常运行,并且似乎大多数情况下都很稳定,但是lib有点奇怪的怪癖,我似乎找不到答案

我需要单击表单上的一个按钮,并将所有视频发送到特定时间,目前它们的长度都相同

使用

  _mediaPlayer1 = new MediaPlayer(_libVLC1);
  _mediaPlayer2 = new MediaPlayer(_libVLC1);
  _mediaPlayer3 = new MediaPlayer(_libVLC1);
  _mediaPlayer4 = new MediaPlayer(_libVLC1); 

  media1 = new Media(_libVLC1, @"D:Video.mp4", FromType.FromPath);
  media2 = new Media(_libVLC1, @"D:Video2.mp4", FromType.FromPath);
  media3 = new Media(_libVLC1, @"D:Video3.mp4", FromType.FromPath);
  media4 = new Media(_libVLC1, @"D:Video4.mp4", FromType.FromPath); 

 _mediaPlayer1.Media = media1;
 _mediaPlayer2.Media = media2;
 _mediaPlayer3.Media = media3;
 _mediaPlayer4.Media = media4;

 videoView1.MediaPlayer = _mediaPlayer1;
 videoView2.MediaPlayer = _mediaPlayer2;
 videoView3.MediaPlayer = _mediaPlayer3;
 videoView4.MediaPlayer = _mediaPlayer4;

so to send all 4 to same time i use

foreach (var player in _PlayersCollection)
       {
        player.Time = 12000);
       }

问题是,如果单击按钮,则如果正在播放视频,则视频会直接移到新的时间位置。

如果视频暂停了,就像它们只是在移动一帧一样,它们会抽搐,那么如果再次单击,它们会跳到正确的时间位置。

这很烦人,我看不出原因。

我在网上看到了一条提示,建议将lib的输出渲染器设置为D3d9而不是D3d11,但我找不到如何更改此lib的任何示例。

熟悉Winforms上的lib的人有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我也在vlc.dotnet中注意到了这个问题

看起来播放器不喜欢将时间更改为快速。 我的解决方案是限制跟踪器的更新速度。 类似的事情可能对您有用。

long lngLastScrollTimeStamp=0;

private void trkVideo_Scroll(object sender, EventArgs e)
  {
  if (((Stopwatch.GetTimestamp() / TimeSpan.TicksPerMillisecond) - lngLastScrollTimeStamp) > 250)
    {
    vlcControl1.Time = trkVideo.Value;
    lngLastScrollTimeStamp = Stopwatch.GetTimestamp() / TimeSpan.TicksPerMillisecond;
    }
  }