private void Validate(object sender, EventArgs e) { if (_media == null) { MessageBox.Show("Aucun fichier valable en entrée."); return; } if (tbOut.Text.Length == 0) { MessageBox.Show("Choisissez un fichier de sortie."); return; } if (tbFile.Text.Equals(tbOut.Text)) { MessageBox.Show(I18n.Get("ErrorSameInputOutput")); return; } _builder = new CommandLineBuilder(); _builder.AddEntry(tbFile.Text); int tmp; if (gbVideo.Enabled) { // Vérification CRF if (tbCRF.Text.Length != 0) { if (!int.TryParse(tbCRF.Text, out tmp)) { MessageBox.Show(string.Format(I18n.Get("FormatCrf"), Common.CRF_MIN, Common.CRF_MAX)); _builder = null; return; } if (tmp < Common.CRF_MIN || tmp > Common.CRF_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatCrf"), Common.CRF_MIN, Common.CRF_MAX)); _builder = null; return; } _builder.Param(Parameter.V_CRF, tbCRF.Text); } // Vérification Qscale if (tbQscale.Text.Length != 0) { if (!int.TryParse(tbQscale.Text, out tmp)) { MessageBox.Show(string.Format(I18n.Get("FormatQscale"), Common.QSCALE_MIN, Common.QSCALE_MAX)); _builder = null; return; } if (tmp < Common.QSCALE_MIN || tmp > Common.QSCALE_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatQscale"), Common.QSCALE_MIN, Common.QSCALE_MAX)); _builder = null; return; } _builder.Param(Parameter.V_QSCALE, tbQscale.Text); } // Vérification Qmin int qmin = 4; if (tbQmin.Text.Length != 0) { if (!int.TryParse(tbQmin.Text, out qmin)) { MessageBox.Show(string.Format(I18n.Get("FormatQmin"), Common.QMIN_MIN, Common.QMIN_MAX)); _builder = null; return; } if (qmin < Common.QMIN_MIN || qmin > Common.QMIN_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatQmin"), Common.QMIN_MIN, Common.QMIN_MAX)); _builder = null; return; } _builder.Param(Parameter.V_QMIN, tbQmin.Text); } // Vérification Qmax if (tbQmax.Text.Length != 0) { if (!int.TryParse(tbQmax.Text, out tmp)) { MessageBox.Show(string.Format(I18n.Get("FormatQmax"), qmin, Common.QMAX_MAX)); _builder = null; return; } if (tmp < qmin || tmp > Common.QMAX_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatQmax"), qmin, Common.QMAX_MAX)); _builder = null; return; } _builder.Param(Parameter.V_QMAX, tbQmax.Text); } // Vérification Bitrate if (tbBV.Text.Length != 0) { bool unit = tbBV.Text.EndsWith("k", StringComparison.CurrentCultureIgnoreCase) || tbBV.Text.EndsWith("m", StringComparison.CurrentCultureIgnoreCase); if (!int.TryParse(unit ? tbBV.Text.Substring(0, tbBV.Text.Length - 1) : tbBV.Text, out tmp)) { MessageBox.Show(I18n.Get("FormatBitrate")); _builder = null; return; } if (tmp <= 0) { MessageBox.Show(I18n.Get("FormatBitrate")); _builder = null; return; } _builder.Param(Parameter.V_BITRATE, tbBV.Text); } _builder.VideoCodec((VideoEncoding)cbCV.SelectedValue); } else { _builder.VideoCodec(VideoEncoding.NOVIDEO); } if (gbAudio.Enabled) { _builder.AudioCodec((AudioEncoding)cbCA.SelectedValue); BitrateMp3 br = (BitrateMp3)Enum.Parse(typeof(BitrateMp3), cbBA.SelectedValue.ToString()); if (br != BitrateMp3.Defaut) { _builder.Param(Parameter.A_BITRATE, ((int)br).ToString()); } SamplingRate sr = (SamplingRate)Enum.Parse(typeof(SamplingRate), cbSR.SelectedValue.ToString()); if (sr != SamplingRate.Defaut) { _builder.Param(Parameter.A_SAMPLE, ((int)sr).ToString()); } } else { _builder.AudioCodec(AudioEncoding.NOAUDIO); } _builder.Param(Parameter.NONE, cbFormat.SelectedValue.ToString()).Param(Parameter.MISC_OVERWRITE_YES); this.DialogResult = DialogResult.OK; }
private void Validate(object sender, EventArgs e) { int tmp; if (gbVideo.Enabled) { // Vérification CRF if (tbCRF.Text.Length != 0) { if (!int.TryParse(tbCRF.Text, out tmp)) { MessageBox.Show(string.Format(I18n.Get("FormatCrf"), Common.CRF_MIN, Common.CRF_MAX)); return; } if (tmp < Common.CRF_MIN || tmp > Common.CRF_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatCrf"), Common.CRF_MIN, Common.CRF_MAX)); return; } _builder.Param(Parameter.V_CRF, tbCRF.Text); } // Vérification Qscale if (tbQscale.Text.Length != 0) { if (!int.TryParse(tbQscale.Text, out tmp)) { MessageBox.Show(string.Format(I18n.Get("FormatQscale"), Common.QSCALE_MIN, Common.QSCALE_MAX)); return; } if (tmp < Common.QSCALE_MIN || tmp > Common.QSCALE_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatQscale"), Common.QSCALE_MIN, Common.QSCALE_MAX)); return; } _builder.Param(Parameter.V_QSCALE, tbQscale.Text); } // Vérification Qmin int qmin = 4; if (tbQmin.Text.Length != 0) { if (!int.TryParse(tbQmin.Text, out qmin)) { MessageBox.Show(string.Format(I18n.Get("FormatQmin"), Common.QMIN_MIN, Common.QMIN_MAX)); return; } if (qmin < Common.QMIN_MIN || qmin > Common.QMIN_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatQmin"), Common.QMIN_MIN, Common.QMIN_MAX)); return; } _builder.Param(Parameter.V_QMIN, tbQmin.Text); } // Vérification Qmax if (tbQmax.Text.Length != 0) { if (!int.TryParse(tbQmax.Text, out tmp)) { MessageBox.Show(string.Format(I18n.Get("FormatQmax"), qmin, Common.QMAX_MAX)); return; } if (tmp < qmin || tmp > Common.QMAX_MAX) { MessageBox.Show(string.Format(I18n.Get("FormatQmax"), qmin, Common.QMAX_MAX)); return; } _builder.Param(Parameter.V_QMAX, tbQmax.Text); } // Vérification Bitrate if (tbBV.Text.Length != 0) { bool unit = tbBV.Text.EndsWith("k", StringComparison.CurrentCultureIgnoreCase) || tbBV.Text.EndsWith("m", StringComparison.CurrentCultureIgnoreCase); if (!int.TryParse(unit ? tbBV.Text.Substring(0, tbBV.Text.Length - 1) : tbBV.Text, out tmp)) { MessageBox.Show(I18n.Get("FormatBitrate")); return; } if (tmp <= 0) { MessageBox.Show(I18n.Get("FormatBitrate")); return; } _builder.Param(Parameter.V_BITRATE, tbBV.Text); } _builder.VideoCodec((VideoEncoding)cbCV.SelectedValue); } if (gbAudio.Enabled) { _builder.AudioCodec((AudioEncoding)cbCA.SelectedValue); BitrateMp3 br = (BitrateMp3)Enum.Parse(typeof(BitrateMp3), cbBA.SelectedValue.ToString()); if (br != BitrateMp3.Defaut) { _builder.Param(Parameter.A_BITRATE, ((int)br).ToString()); } SamplingRate sr = (SamplingRate)Enum.Parse(typeof(SamplingRate), cbSR.SelectedValue.ToString()); if (sr != SamplingRate.Defaut) { _builder.Param(Parameter.A_SAMPLE, ((int)sr).ToString()); } } _builder.Param(Parameter.NONE, cbFormat.SelectedValue.ToString()); this.DialogResult = DialogResult.OK; }
public void EncodeMP4(string output) { if (_cancelFlag) { return; } _outputForLength = output; CommandLineBuilder cb = new CommandLineBuilder(); if (StartOffset != TimeSpan.Zero) { cb.Seek(string.Format("{0:c}", StartOffset)); } cb.AddEntry(FileFullPath); for (int i = 0; i < Overlays.Length; i++) { if (Overlays[i].Item1 >= 0 && !string.IsNullOrWhiteSpace(Overlays[i].Item2)) { cb.AddEntry(Overlays[i].Item2); } } if (EndOffset != TimeSpan.Zero) { cb.To(string.Format("{0:c}", EndOffset - StartOffset)); } if (!string.IsNullOrWhiteSpace(ResizeHeight) || !string.IsNullOrWhiteSpace(ResizeWidth)) { cb.FilterComplex.Resize(ResizeWidth, ResizeHeight); } if (Rotate < 4) { cb.FilterComplex.Transpose((Transpose)Rotate); } int j = 1; for (int i = 0; i < Overlays.Length; i++) { if (Overlays[i].Item1 >= 0 && !string.IsNullOrWhiteSpace(Overlays[i].Item2)) { cb.FilterComplex.Overlay((Overlay)Overlays[i].Item1, string.Format("[{0}]", j++)); } } cb.VideoCodec(VideoEncoding.X264).Param(Parameter.V_BITRATE, MP4_bv); if (NoSound) { cb.AudioCodec(AudioEncoding.NOAUDIO); } else { cb.AudioCodec(AudioEncoding.AAC).Param(Parameter.A_BITRATE, MP4_ba); } if (Overwrite) { cb.Param(Parameter.MISC_OVERWRITE_YES); } else { cb.Param(Parameter.MISC_OVERWRITE_NO); } string cde = cb.Output(output); SendLog("\r\nffmpeg " + cde); SendLog("------------------------------------------------------------"); if (output.Equals(FileFullPath, StringComparison.CurrentCultureIgnoreCase)) { SendLog(I18n.Get("ErrorSameInputOutput")); } else { ProcessStartInfo psi = new ProcessStartInfo(Common.ffmpeg, cde); psi.UseShellExecute = false; psi.CreateNoWindow = true; psi.RedirectStandardError = true; using (Process p = new Process()) { _currentProcess = p; p.StartInfo = psi; p.Start(); string line; while ((line = p.StandardError.ReadLine()) != null) { SendLog(line); Application.DoEvents(); } p.WaitForExit(); } _currentProcess = null; } }