为何轨迹栏停止处理我的视频?

问题描述

我正在使用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 (将#修改为@)