问题描述
我正在使用vlc.dotnet创建一个应用程序,我想实现一个跟踪栏,以便能够滚动浏览视频。但是我面临的问题是,跟踪栏似乎可以工作到视频中的特定点,并且每个视频似乎都不同。以下是我的代码摘要,因为实际代码很长。
Decimal value;
decimal value2;
private void Form1_Load(object sender,EventArgs e)
{
trackBar1.ValueChanged += new EventHandler(trackBar1_ValueChanged);
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();
panel1.Controls.Add(control);
main_form_LC4_data();
}
void main_form_LC4_data()
{
control.SetMedia(new Uri(selected_LC4_File).AbsoluteUri);
control.Audio.Volume = 0;
control.Update();
}
private void button11_Click(object sender,EventArgs e)
{
trackBar1.Value += (int)value2;
}
private void button12_Click(object sender,EventArgs e)
{
if (trackBar1.Value == 0)
{
}
else
{
trackBar1.Value -= (int)value2;
}
}
private void trackBar1_ValueChanged(object sender,System.EventArgs e)
{
control.Time = trackBar1.Value;
}
该代码还具有两个按钮,可在跟踪栏中增加和减少值,因此用户可以在跟踪栏旁边使用该按钮滚动浏览视频。这些按钮也可以工作到特定点,然后停止。该视频包含与每一帧链接的元数据行,因此使用视频的长度和元数据的行数,我尝试计算最大长度和报价频率,这似乎也不起作用。下面的代码显示了我如何尝试实现计算。
var player = new WindowsMediaPlayer();
var clip = player.newMedia(selected_LC4_File);
string vOut = clip.duration.ToString();
long howdy = Convert.ToInt64(clip.duration);
string vOut2 = vOut.Replace(".","");
int x = Int32.Parse(vOut2);
int x_result = x * 10;
int test = lc4_file_calculations.Count;
value = Decimal.Divide(x_result,test);
Console.WriteLine("Video Time : " + x_result);
Console.WriteLine("Frames : " + test);
Console.WriteLine("FPS : " + value);
value2 = value;
int a = test;
trackBar1.Maximum = a
trackBar1.TickFrequency = value;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)