コード例 #1
0
        private void AddMovieButton_Click(object sender, RoutedEventArgs e)
        {
            if (ProjectIsNotNull())
            {
                var result = openMovieDialog.ShowDialog(this);
                if (result.GetValueOrDefault())
                {
                    if (File.Exists(openMovieDialog.FileName))
                    {
                        var moviePath = openMovieDialog.FileName;
                        var metaDataPath = String.Format("{0}.csmd", moviePath);
                        var metaData = new ClipSynthMetaData();

                        if (File.Exists(metaDataPath))
                        {
                            metaData.Path = metaDataPath;
                            ClipSynthMetaData.Load(ref metaData);
                        }
                        else
                        {
                            MessageBox.Show("Meta data file not found! Please ensure you generate this movie file using ClipSynth", "ClipSynth Warning");
                        }

                        var movie = new ClipSynthMovie()
                        {
                            Path = moviePath,
                            Thumbnail = metaData.Thumbnail,
                            MetaData = metaDataPath,
                            Start = 1,
                            End = metaData.Frames,
                            UniqueId = project.GetUniqueId(),
                        };

                        project.Movies.Add(movie);
                        ListBox_AddItem(movie);
                    }
                }

                project.Dirty = true;
            }
        }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: greymind/ClipSynth
        private void GenerateButton_Click(object sender, RoutedEventArgs e)
        {
            #region Images mode

            if (settings.Mode == ClipSynthMode.Images)
            {
                // First type encountered will only be processed
                var fileTypes = new String[] { "jpg", "jpeg", "png", };

                var checkedItems = TreeView_GetAllCheckedItems();

                if (checkedItems.Count > 0)
                {
                    ProgressBar.Maximum = checkedItems.Count;
                }
                else
                {
                    MessageBox.Show("No items selected!", "ClipSynth Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
                }

                foreach (var checkedItem in checkedItems)
                {
                    ++ProgressBar.Value;
                    ProgressBar.InvalidateVisual();

                    foreach (var fileType in fileTypes)
                    {
                        var directory = IOPath.GetFileNameWithoutExtension(checkedItem.Path);
                        var files = Directory.GetFiles(checkedItem.Path, String.Format("*.{0}", fileType), SearchOption.TopDirectoryOnly);
                        if (files.Length > 0)
                        {
                            var jobs = new StreamWriter(@"VirtualDub.jobs");
                            jobs.WriteLine("VirtualDub.Open(U\"{0}\");", files[0]);

                            UInt32 width = 0, height = 0;
                            UInt32.TryParse(WidthTextBox.Text, out width);
                            UInt32.TryParse(HeightTextBox.Text, out height);

                            if (width != 0 && height != 0)
                            {
                                jobs.WriteLine("VirtualDub.video.filters.Add(\"resize\");");
                                jobs.WriteLine("VirtualDub.video.filters.instance[0].Config({0}, {1}, 2);", width, height);
                            }

                            var filename = String.Format("{0}.{1}.avi", IOPath.Combine(checkedItem.Path, directory), fileType);
                            var imageFileSplit = files[0].Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
                            if (imageFileSplit.Length > 0)
                            {
                                filename = String.Format("{0}.avi", imageFileSplit[0]);
                            }

                            jobs.WriteLine("VirtualDub.video.SetFrameRate2({0}, {1}, {2});", 30, 1, 1);
                            jobs.WriteLine("VirtualDub.SaveCompatibleAVI(U\"{0}\");", filename);
                            jobs.WriteLine("VirtualDub.Close();");
                            jobs.Close();

                            File.Delete(filename);

                            var process = Process.Start(VirtualDubPath, "/s VirtualDub.jobs");
                            process.WaitForExit();

                            if (File.Exists(filename))
                            {
                                var metaData = new ClipSynthMetaData();
                                metaData.Path = String.Format("{0}.csmd", filename);
                                metaData.Movie = filename;
                                metaData.Thumbnail = files[0];
                                metaData.Frames = files.Length;
                                ClipSynthMetaData.Save(ref metaData);
                            }
                        }
                    }
                }

                ProgressBar.Value = 0;
                ProgressBar.Maximum = 100;
            }

            #endregion

            #region Movies mode

            if (settings.Mode == ClipSynthMode.Movies)
            {
                var avs = new StreamWriter(@"VirtualDub.avs");
                var jobs = new StreamWriter(@"VirtualDub.jobs");

                var checkedItems = ListBox_GetAllCheckedItems();

                if (checkedItems.Count > 0)
                {
                    ProgressBar.Maximum = checkedItems.Count;
                }
                else
                {
                    MessageBox.Show("No items selected!", "ClipSynth Warning", MessageBoxButton.OK, MessageBoxImage.Warning);

                    avs.Close();
                    jobs.Close();

                    return;
                }

                var index = 0;
                foreach (var checkedItem in checkedItems)
                {
                    ++ProgressBar.Value;
                    ProgressBar.InvalidateVisual();

                    var filename = (string)checkedItem.Label.Tag;
                    if (File.Exists(filename))
                    {
                        avs.WriteLine("_{0} = AVISource(\"{1}\").Trim({2}, {3})", index++, filename, checkedItem.Start, checkedItem.End);
                    }
                }

                if (index != 0)
                {
                    avs.Write("_{0} = ", index);
                    for (int i = 0; i < index; i++)
                    {
                        avs.Write("{0}_{1}", i != 0 ? " + " : String.Empty, i);
                    }
                    avs.WriteLine();

                    var soundtracks = SoundtrackListBox_GetAllCheckedItems();
                    if (soundtracks.Count > 0)
                    {
                        var soundtrack = (string)soundtracks[0].Label.Tag;
                        if (File.Exists(soundtrack))
                        {
                            if (IOPath.GetExtension(soundtrack) == ".mp3")
                            {
                                avs.Write("LoadPlugin(\"NicAudio.dll\")");
                                avs.Write("AudioDub(_{0}, NicMPG123Source(\"{1}\"))", index, soundtrack);
                                avs.WriteLine();
                                avs.Write("DelayAudio(-{0})", soundtracks[0].Start / 30.0f);
                            }
                            else if (IOPath.GetExtension(soundtrack) == ".wav")
                            {
                                avs.Write("AudioDub(_{0}, WAVSource(\"{1}\"))", index, soundtrack);
                                avs.WriteLine();
                                avs.Write("DelayAudio(-{0})", soundtracks[0].Start / 30.0f);
                            }
                        }
                    }
                    else
                    {
                        avs.Write("_{0}", index);
                    }
                    avs.Close();

                    var previewFilename = String.Format("{0}.avi", IOPath.Combine(IOPath.GetDirectoryName(settings.Project), "Preview"));
                    jobs.WriteLine("VirtualDub.Open(U\"VirtualDub.avs\");");
                    jobs.WriteLine("VirtualDub.SaveCompatibleAVI(U\"{0}\");", previewFilename);
                    jobs.WriteLine("VirtualDub.Close();");
                    jobs.Close();

                    File.Delete(previewFilename);

                    var process = Process.Start(VirtualDubPath, "/s VirtualDub.jobs");
                    process.WaitForExit();

                    if (File.Exists(previewFilename))
                    {
                        var result = MessageBox.Show("Generate complete. Do you want to preview now?", "ClipSynth Question", MessageBoxButton.YesNo, MessageBoxImage.Question);
                        switch (result)
                        {
                            case MessageBoxResult.No:
                                break;
                            case MessageBoxResult.Yes:
                                process = Process.Start(previewFilename);
                                break;
                            default:
                                break;
                        }
                    }
                }
                else
                {
                    avs.Close();
                    jobs.Close();
                }

                ProgressBar.Value = 0;
                ProgressBar.Maximum = 100;
            }

            #endregion
        }
コード例 #3
0
        private void ListBox_AddItem(ClipSynthMovie movie)
        {
            // Meta data intelligent check/fix
            if (!File.Exists(movie.Thumbnail))
            {
                var metaDataThumbnail = IOPath.Combine(IOPath.GetDirectoryName(movie.Path), IOPath.GetFileName(movie.Thumbnail));
                if (File.Exists(metaDataThumbnail))
                {
                    movie.Thumbnail = metaDataThumbnail;

                    // Fix meta data file
                    var metaData = new ClipSynthMetaData();
                    metaData.Path = movie.MetaData;
                    ClipSynthMetaData.Load(ref metaData);

                    metaData.Movie = movie.Path;
                    metaData.Thumbnail = metaDataThumbnail;
                    ClipSynthMetaData.Save(ref metaData);
                }
            }

            var item = new ListBoxItem();
            var checkBoxContent = new CheckBoxContent(movie.Path, IOPath.GetFileName(movie.Path), ListBoxCheckBox_Checked, movie.Thumbnail, movie.Start, movie.End, movie.UniqueId);
            checkBoxContent.Tag = movie;
            checkBoxContent.CheckBox.IsChecked = movie.Checked;
            checkBoxContent.Label.ToolTip = movie.Path;
            checkBoxContent.Label.Tag = movie.Path;
            item.Content = checkBoxContent;
            checkBoxContent.StartTextBox.TextChanged += ListBoxTextBox_TextChanged;
            checkBoxContent.EndTextBox.TextChanged += ListBoxTextBox_TextChanged;

            FileListBox.Items.Add(item);
        }