Ejemplo n.º 1
0
        /// <summary>
        /// 轨道导出流程中的回调函数
        /// </summary>
        /// <param name="sender">Mkvextract原型</param>
        /// <param name="rate">进度0-100</param>
        void MkvExtractCallback(object sender, int rate)
        {
            Mkvextract objMkvExtract = (Mkvextract)sender;

            this.Invoke(new Action(() =>
            {
                if (rate < 0)
                {
                    MessageBox.Show(objMkvExtract.Error);
                }
                else if (rate < 100)
                {
                    progressTrack.Value = rate;
                }
                else
                {
                    progressTrack.Value = progressTrack.Maximum;
                    if (MessageBox.Show("字幕文件导出完成,是否需要打开输出文件夹?", "导出成功", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                    {
                        System.Diagnostics.Process.Start(Path.GetDirectoryName(objMkvExtract.SaveFilePath));
                    }
                    progressTrack.Visible = false;
                }
            }));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 初始化
 /// </summary>
 public FormMain()
 {
     InitializeComponent();
     MainPath      = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
     ObjMkvinfo    = new Mkvinfo(GetMkvinfoDoneCallback);
     ObjMkvExtract = new Mkvextract(MkvExtractCallback);
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 导出按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripMenuItemOutput_Click(object sender, EventArgs e)
        {
            ListViewItem listViewItem = listViewTrack.SelectedItems[0];
            MkvinfoTrack mkvinfoTrack = new MkvinfoTrack(ObjMkvinfo.Tracks[Convert.ToInt32(listViewItem.Text)]);

            mkvinfoTrack.TrackID   = Convert.ToInt32(listViewItem.Text);
            mkvinfoTrack.Language  = listViewItem.SubItems[3].Text;
            mkvinfoTrack.IsDefault = Convert.ToBoolean(listViewItem.SubItems[4].Text);
            mkvinfoTrack.Name      = listViewItem.SubItems[5].Text;

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Title            = "导出字幕文件";
            sfd.InitialDirectory = Path.GetDirectoryName(ObjMkvinfo.FilePath);
            sfd.Filter           = @"字幕文件|*." + Regex.Match(mkvinfoTrack.CodecID, @"(?<=\/)\w+").Value.ToLower() + "|文本文件|*.txt|所有文件|*.*";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                string path = sfd.FileName;
                if (File.Exists(path))
                {
                    File.Delete(path);
                }
                // 输出文件,调用导出类
                Mkvextract ObjMkvExtract = new Mkvextract(MkvExtractCallback);
                ObjMkvExtract.MkvFilePath  = ObjMkvinfo.FilePath;
                ObjMkvExtract.SaveFilePath = path;
                ObjMkvExtract.Track        = mkvinfoTrack;
                if (ObjMkvExtract.Start(out string msg))
                {
                    // 开始转换
                    progressTrack.Maximum = 100;
                    progressTrack.Value   = 0;
                    progressTrack.Visible = true;
                    progressTrack.BringToFront();
                }
            }
        }