如何解决为何轨迹栏停止处理我的视频?
我正在使用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 举报,一经查实,本站将立刻删除。