public ComparisonWindow(MediaInfo mediaFile, Encoder encoder) { InitializeComponent(); this.mediaFile = mediaFile; this.encoder = encoder; ffmpegEngine = new FFmpegEngine(); ffmpegEngine.ConversionCompleted += FFmpegEngine_CutCompleted; mediaElementOriginal.Open(new Uri(mediaFile.Source)); labelTitle.Content += $"({encoder})"; sliderPreview.Maximum = mediaFile.Duration.TotalSeconds; Height -= 30; //compensate for setting window chrome height to 0; foreach (Quality quality in Enum.GetValues(typeof(Quality))) { comboBoxQuality.Items.Add(quality.GetName()); } comboBoxQuality.SelectedIndex = 3; UpdateStartEndTimes(); }
public ComparisonWindow(MediaInfo mediaFile, Encoder encoder) { InitializeComponent(); this.mediaFile = mediaFile; this.encoder = encoder; ffmpegEngine = new FFmpegEngine(); ffmpegEngine.ConversionCompleted += FFmpegEngine_ConversionCompleted; ffmpegEngine.ProgressChanged += FFmpegEngine_ProgressChanged; mediaElementOriginal.Open(new Uri(mediaFile.Source)); labelTitle.Content += encoder == Encoder.H264 ? " (H264)" : " (H265)"; sliderPreview.Maximum = mediaFile.Duration.TotalSeconds; Height -= 30; //compensate for setting window chrome height to 0; foreach (var item in MainWindow.QUALITY) { comboBoxQuality.Items.Add(item); } comboBoxQuality.SelectedIndex = 3; UpdateStartEndTimes(); }
private async void ButtonConvert_Click(object sender, RoutedEventArgs e) { if (textBoxDestination.Text.EndsWith("mp4") && mediaInfo.AudioCodec.ToLower() == "opus") { MessageBox.Show("Opus audio in mp4 container is currently unsupported.\nEither use aac audio or mkv container.", "FF Video Converter"); return; } textBlockProgress.Text = "Starting conversion process..."; ffmpegEngine = new FFmpegEngine(); ffmpegEngine.ProgressChanged += UpdateProgress; ffmpegEngine.ConversionCompleted += ConversionCompleted; Encoder selectedEncoder = comboBoxEncoder.SelectedIndex == 0 ? Encoder.H264 : Encoder.H265; ConversionOptions conversionOptions = new ConversionOptions(selectedEncoder, (byte)comboBoxPreset.SelectedIndex, GetCRFFromQuality(comboBoxQuality.Text, selectedEncoder)); if (checkBoxCrop.IsChecked == true) { conversionOptions.CropData = new CropData((short)integerTextBoxCropLeft.Value, (short)integerTextBoxCropTop.Value, (short)integerTextBoxCropRight.Value, (short)integerTextBoxCropBottom.Value); } else if (comboBoxResolution.SelectedIndex != 0) { conversionOptions.Resolution = GetResolutionFromString(comboBoxResolution.Text); } if (comboBoxFramerate.SelectedIndex != 0) { conversionOptions.Framerate = Convert.ToByte(comboBoxFramerate.SelectedItem); } outputFps = comboBoxFramerate.SelectedIndex == 0 ? Convert.ToSingle(mediaInfo.Framerate) : Convert.ToSingle(comboBoxFramerate.SelectedItem); if (checkBoxCut.IsChecked == true) { if (!TimeSpan.TryParse(textBoxStart.Text, out TimeSpan start)) { MessageBox.Show("Enter a valid start time", "FF Video Converter"); return; } if (!TimeSpan.TryParse(textBoxEnd.Text, out TimeSpan end)) { MessageBox.Show("Enter a valid end time", "FF Video Converter"); return; } if (checkBoxFastCut.IsChecked == true) { start = start.Add(TimeSpan.FromSeconds(0.2)); ffmpegEngine.FastCut(mediaInfo.Source, textBoxDestination.Text, start.ToString(@"hh\:mm\:ss\.ff"), textBoxEnd.Text); currentOutputPath = textBoxDestination.Text; return; } else { conversionOptions.Start = start; conversionOptions.End = end; } } ffmpegEngine.Convert(mediaInfo, textBoxDestination.Text, conversionOptions); currentOutputPath = textBoxDestination.Text; buttonPauseResume.IsEnabled = true; buttonCancel.IsEnabled = true; buttonConvert.IsEnabled = false; buttonPreview.IsEnabled = false; buttonOpenFile.IsEnabled = false; buttonOpenStream.IsEnabled = false; checkBoxCrop.IsEnabled = false; checkBoxCut.IsEnabled = false; await mediaElementInput.Pause(); buttonPlayPause.Content = " ▶️"; gridSourceMedia.IsEnabled = false; buttonOpenOutput.Visibility = Visibility.Hidden; Storyboard storyboard = FindResource("ProgressAnimationIn") as Storyboard; storyboard.Begin(); TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal; }