예제 #1
0
 private void labInfStart_MouseDoubleClick(object sender, MouseButtonEventArgs e)
 {
     Zeitpunkt z = new Zeitpunkt();
     z.setAll(sstartzeit.Value);
     showTimeMagicInput(1, z.getStunden().ToString("00"), z.getMinuten().ToString("00"), z.getSekunden().ToString("00.000"));
 }
예제 #2
0
 private void slaenge_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
 {
     GenerateVorschau(false);
     Zeitpunkt t = new Zeitpunkt();
     t.setAll(slaenge.Value);
     labInfLaenge.Content = t.ToString();
 }
예제 #3
0
        private void GenerateVorschau(bool von)
        {
            if (this.IsInitialized == false) { return; }

            Zeitpunkt zp = new Zeitpunkt();
            if (von)
            {
                zp.setAll(sstartzeit.Value);
            }
            else {
                zp.setAll(sstartzeit.Value + slaenge.Value);
            }

            lastZP = zp;
            GenerateVorschauName();

            if (tmpvorlage == null || isTemplateOld()) {
                setTempVorlage();
            }

            if (CheckIfInFrame() == false) {
                return;
            }

            if (File.Exists(strVorschauPfad + tmpvorlage.strName + lastZP.pathString() + strVorschaubild))
            {
                setImage();
            }
            else {
                BackgroundWorker ba = new BackgroundWorker();
                ba.DoWork += new DoWorkEventHandler(CreateNewVorschau);
                ba.RunWorkerAsync();
            }
        }
예제 #4
0
        private void CreateExportWorker(object sender, EventArgs e)
        {
            try
            {
                System.Diagnostics.Process p = new System.Diagnostics.Process();
                p.StartInfo.FileName = "ffmpeg.exe";

                Zeitpunkt startZP = new Zeitpunkt();
                startZP.setAll(exportStart);
                Zeitpunkt bisZP = new Zeitpunkt();
                bisZP.setAll(exportLaenge);

                strOutputFile = PfadAufraeumen(System.IO.Path.GetFileNameWithoutExtension(strInputFile) + "_" + startZP.pathString() + "_" + bisZP.pathString());
                //-fs 1000000
                p.StartInfo.Arguments = "-ss " + startZP.ToString() + " -i \"" + strInputFile + "\" -sn -c:v libvpx";
                if (tmpvorlage.imaxfilesize > 0) {
                    p.StartInfo.Arguments += " -fs " + (tmpvorlage.imaxfilesize * 1000000);
                }
                if (tmpvorlage.baudioaus == true) {
                    p.StartInfo.Arguments += " -an";
                }
                p.StartInfo.Arguments += " -crf " + tmpvorlage.icrf + " -qmin " + tmpvorlage.iqmin + " -qmax " + tmpvorlage.iqmax;
                if (tmpvorlage.icropbreite > 0 && tmpvorlage.icrophoehe > 0)
                {
                    p.StartInfo.Arguments += " -vf \"[in]scale=" + tmpvorlage.ibreite + ":" +
                    tmpvorlage.ihoehe + "[middle];[middle]crop=" + tmpvorlage.icropbreite + ":" + tmpvorlage.icrophoehe + ":" +
                    tmpvorlage.icropx + ":" + tmpvorlage.icropy + "[out]\"";
                }
                else {
                    p.StartInfo.Arguments += " -vf \"scale=" + tmpvorlage.ibreite + ":" + tmpvorlage.ihoehe + "\"";
                }
                p.StartInfo.Arguments += " -to " + bisZP.ToString() + " -y \"" + strOutputFile + ".webm\"";

                lsFfmpegLog.Add(p.StartInfo.FileName + " " + p.StartInfo.Arguments);

                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
                p.Start();

                p.WaitForExit();
                this.Dispatcher.BeginInvoke(new Action(() => gridContent.IsEnabled = true));
                this.Dispatcher.BeginInvoke(new Action(() => gridContentBlurEffekt.Radius = 0));
                this.Dispatcher.BeginInvoke(new Action(() => gridLoading.Visibility = Visibility.Collapsed));
            }
            catch { MessageBox.Show("Fehler beim encoden des Videos.", "Vorgang abgebrochen", MessageBoxButton.OK, MessageBoxImage.Error);  }
        }
예제 #5
0
        private void btnTimeMagicOk_Click(object sender, RoutedEventArgs e)
        {
            switch (vorgangid)
            {
                case 1: //Startzeitpunkt
                    if (IsNumeric(tbTimeMagicStunden.Text) && IsNumeric(tbTimeMagicMinuten.Text) && IsNumeric(tbTimeMagicSekunden.Text))
                    {
                        int Stunden = Convert.ToInt32(tbTimeMagicStunden.Text);
                        int Minuten = Convert.ToInt32(tbTimeMagicMinuten.Text);
                        double Sekunden = Convert.ToDouble(Convert.ToDecimal(tbTimeMagicSekunden.Text));

                        Zeitpunkt z = new Zeitpunkt();
                        z.setValue(Stunden, Minuten, Sekunden);
                        if (z.getMilliseconds() > lmaxLaufzeitInMilliSek)
                        {
                            sstartzeit.Value = lmaxLaufzeitInMilliSek;
                        }
                        else {
                            sstartzeit.Value = z.getMilliseconds();
                        }
                    }
                    break;
                case 2: //Länge
                    if (IsNumeric(tbTimeMagicStunden.Text) && IsNumeric(tbTimeMagicMinuten.Text) && IsNumeric(tbTimeMagicSekunden.Text))
                    {
                        int Stunden = Convert.ToInt32(tbTimeMagicStunden.Text);
                        int Minuten = Convert.ToInt32(tbTimeMagicMinuten.Text);
                        double Sekunden = Convert.ToDouble(Convert.ToDecimal(tbTimeMagicSekunden.Text));

                        Zeitpunkt z = new Zeitpunkt();
                        z.setValue(Stunden, Minuten, Sekunden);
                        if (sstartzeit.Value + z.getMilliseconds() > lmaxLaufzeitInMilliSek)
                        {
                            slaenge.Value = lmaxLaufzeitInMilliSek - sstartzeit.Value - 1;
                        }
                        else {
                            slaenge.Value = sstartzeit.Value + z.getMilliseconds();
                        }
                    }
                    break;
            }

            gridContentBlurEffekt.Radius = 0;
            gridTimeMagicInput.Visibility = Visibility.Collapsed;
        }
예제 #6
0
        public void OeffneDatei()
        {
            //Alles auf 0 was so geht
            lastZP = new Zeitpunkt();
            sstartzeit.Value = 0;
            slaenge.Value = 0;
            imgVorschau.Source = null;
            image = null;

            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "Bitte wähle die gewünschte Datei";
            Nullable<bool> r = ofd.ShowDialog();
            if (r == true)
            {
                strInputFile = ofd.FileName;
                BackgroundWorker ba = new BackgroundWorker();
                ba.DoWork += new DoWorkEventHandler(HandlerLoadLength);
                ba.RunWorkerAsync();
                mainGrid.IsEnabled = false;
            }
            else {
                MessageBox.Show("Keine Datei ausgewählt. DAU-Modus aktiviert. Das Programm wird beendet!", "Ungültige Datei", MessageBoxButton.OK, MessageBoxImage.Error);
                System.Environment.Exit(1);
            }
        }
예제 #7
0
        public void CreateExport()
        {
            Zeitpunkt zp = new Zeitpunkt();
            zp.setAll(sstartzeit.Value);
            lastZP = zp;
            if (CheckIfInFrame() == false) {
                MessageBox.Show("Der Ausgewählte Zeitraum ist ungültig.", "Ungültiger Zeitraum", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            zp.setAll(sstartzeit.Value + slaenge.Value);
            lastZP = zp;
            if (CheckIfInFrame() == false)
            {
                MessageBox.Show("Der Ausgewählte Zeitraum ist ungültig.", "Ungültiger Zeitraum", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            exportStart = sstartzeit.Value;
            exportLaenge = slaenge.Value;

            setTempVorlage();

            gridContent.IsEnabled = false;
            gridContentBlurEffekt.Radius = 10;
            gridLoading.Visibility = Visibility.Visible;
            //labLadeInfo
            Random r = new Random();
            labLadeInfo.Content = "[ " + lsWichtigeHinweise.ElementAt(r.Next(lsWichtigeHinweise.Count - 1)) + " ]";

            BackgroundWorker b = new BackgroundWorker();
            b.DoWork += new DoWorkEventHandler(CreateExportWorker);
            b.RunWorkerAsync();
        }