pre*_*aik 5 .net c# vlc winforms libvlc
正如您可能在c#Windows窗体中所说的那样,我需要添加一个自定义的搜索栏/跟踪栏。但是问题在于,vlc点网表单库几乎没有文档。我需要知道如何在Windows窗体应用程序中添加自定义搜寻栏。
记住,我没有使用vlc activeX插件*。**相反,我正在使用vlc的点网库的nuget包,并且一切正常。我添加了切换播放和暂停按钮,停止按钮,能够获取当前时间,能够获取总时间以及其他所有内容。但是我不知道如何添加搜索栏,以便当我搜索时,视频移动到该位置。请帮助我完整的代码。
我成功完成了,谢谢你,这对我来说是一个好习惯。我已经在formdeneme()方法中添加了媒体
您必须公开VlcControl.cs类中的对象。(私有VlcMediaPlayer myVlcMediaPlayer;){非常重要}
public int a = 0 ;`
public int c = 0;
public delegate void UpdateControlsDelegate(); //Execute when video loads
public formdeneme()
{
InitializeComponent();
myVlcControl.Play("file:///C:/Users/1315k/Downloads/machine.mp4");
// You can add your media like above.
//Event handler for 'current media time' label
this.vlcControl1.PositionChanged += new System.EventHandler<Vlc.DotNet.Core.VlcMediaPlayerPositionChangedEventArgs>(this.vlcControl1_PositionChanged);
//Event handler for setting trackBar1.Maximum on media load
vlcControl1.Playing += new System.EventHandler<VlcMediaPlayerPlayingEventArgs>(SetProgresMax);
}
// This is the main function which you looking.
private void trackBar1_Scroll(object sender, EventArgs e)
{
myVlcControl.myVlcMediaPlayer.Time = trackBar1.Value * 1000;
int b = (int)myVlcControl.myVlcMediaPlayer.Time / 1000;
int d = b / 60;
b = b - d * 60;
label1.Text = d+":"+b + "/"+ c + ":" + a;
// The Time value is milisecond, you have divide 1000 for be second.
}
private void formdeneme_Load(object sender, EventArgs e)
{
a = (int)myVlcControl.myVlcMediaPlayer.Length / 1000;
trackBar1.Maximum = a;
c = a / 60;
a = a - c * 60;
label1.Text = 0 + "/" + c+":"+a;
}
Run Code Online (Sandbox Code Playgroud)
您可以添加一个可以更改媒体和trackbar.Maximum值的按钮。
更新
感谢askepott 他在下面添加了一些代码,我没有尝试过,但对我来说看起来不错。
为了使标签显示当前的媒体时间,请在此帖子下方添加此委托函数,将其称为函数(currentTrackTime),并在此文章的顶部声明。另外,不要忘记在顶部添加vlcControl1_PositionChanged事件处理程序。
//更新当前视频时间标签(委托)
public void InvokeUpdateControls()
{
if (this.InvokeRequired)
{
this.Invoke(new UpdateControlsDelegate(currentTrackTime));
}
else
{
currentTrackTime();
}
}
Run Code Online (Sandbox Code Playgroud)
//更新当前视频的时间标签
private void currentTrackTime()
{
int b = (int)vlcControl1.VlcMediaPlayer.Time / 1000;
int d = b / 60;
b = b - d * 60;
label1.Text = d+":"+b + "/"+ c + ":" + a; //min : sec /
}
Run Code Online (Sandbox Code Playgroud)
//如果您希望轨迹栏根据当前媒体位置自动更新其值,则将其添加到currentTrackTime()
trackBar1.Value = b;
Run Code Online (Sandbox Code Playgroud)
//调用视频位置更改的更新控件
private void vlcControl1_PositionChanged(object sender, Vlc.DotNet.Core.VlcMediaPlayerPositionChangedEventArgs e)
{
InvokeUpdateControls();
}
Run Code Online (Sandbox Code Playgroud)
//此外,如果在加载视频时无法获取和设置vlcControl1.Length时遇到麻烦,请使用以下命令:
//Fire event when the video starts
private void SetProgresMax(object sender, VlcMediaPlayerPlayingEventArgs e)
{
Invoke(new Action(() =>
{
trackBar1.Value = trackBar1.Minimum;
var vlc = (VlcControl)sender;
trackBar1.Maximum = (int)vlc.Length / 1000;
a = (int)vlc.Length / 1000; // Length (s)
c = a / 60; // Length (m)
a = a % 60; // Length (s)
label1.Text = 0 + "/" + c+":"+a;
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2762 次 |
| 最近记录: |