Change ffprope location to ffmpeg folder

This commit is contained in:
niksedk 2023-07-16 18:35:04 +02:00
parent ff3f40ba48
commit 72a9e50be3
8 changed files with 48 additions and 40 deletions

View File

@ -23,5 +23,6 @@
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=assa/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=assa/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Downloader/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Downloader/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ffprobe/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Matroska/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Matroska/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nikse/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary> <s:Boolean x:Key="/Default/UserDictionary/Words/=Nikse/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@ -12,11 +12,11 @@ namespace Nikse.SubtitleEdit.Controls
private string _previewText = "Subtitle text."; private string _previewText = "Subtitle text.";
private bool _showShotChange = true; private bool _showShotChange = true;
private int _leftGap = 0; private int _leftGap;
private int _leftRedZone = 7; private int _leftRedZone = 7;
private int _leftGreenZone = 12; private int _leftGreenZone = 12;
private int _rightGap = 0; private int _rightGap;
private int _rightRedZone = 7; private int _rightRedZone = 7;
private int _rightGreenZone = 12; private int _rightGreenZone = 12;
@ -74,19 +74,14 @@ namespace Nikse.SubtitleEdit.Controls
set { _rightGreenZone = value; Invalidate(); } set { _rightGreenZone = value; Invalidate(); }
} }
public CuesPreviewView()
{
}
protected override void OnPaint(PaintEventArgs e) protected override void OnPaint(PaintEventArgs e)
{ {
base.OnPaint(e); base.OnPaint(e);
using (var brush = new SolidBrush(Color.White)) using (var brush = new SolidBrush(Color.White))
{ {
float width = this.Size.Width; float width = Size.Width;
float height = this.Size.Height; float height = Size.Height;
// Background // Background
brush.Color = Color.Gray; brush.Color = Color.Gray;
@ -94,31 +89,31 @@ namespace Nikse.SubtitleEdit.Controls
// Green zones // Green zones
brush.Color = Color.Green; brush.Color = Color.Green;
e.Graphics.FillRectangle(brush, (width / 2) - FramesToPixels(this.LeftGreenZone), 0, FramesToPixels(this.LeftGreenZone), height); e.Graphics.FillRectangle(brush, (width / 2) - FramesToPixels(LeftGreenZone), 0, FramesToPixels(LeftGreenZone), height);
e.Graphics.FillRectangle(brush, width / 2, 0, FramesToPixels(this.RightGreenZone), height); e.Graphics.FillRectangle(brush, width / 2, 0, FramesToPixels(RightGreenZone), height);
// Red zone // Red zone
brush.Color = Color.Firebrick; brush.Color = Color.Firebrick;
e.Graphics.FillRectangle(brush, (width / 2) - FramesToPixels(this.LeftRedZone), 0, FramesToPixels(this.LeftRedZone), height); e.Graphics.FillRectangle(brush, (width / 2) - FramesToPixels(LeftRedZone), 0, FramesToPixels(LeftRedZone), height);
e.Graphics.FillRectangle(brush, width / 2, 0, FramesToPixels(this.RightRedZone), height); e.Graphics.FillRectangle(brush, width / 2, 0, FramesToPixels(RightRedZone), height);
// Subtitle // Subtitle
brush.Color = Color.FromArgb(153, 0, 0, 0); brush.Color = Color.FromArgb(153, 0, 0, 0);
e.Graphics.FillRectangle(brush, 0, 0, (width / 2) - FramesToPixels(this.LeftGap), height); e.Graphics.FillRectangle(brush, 0, 0, (width / 2) - FramesToPixels(LeftGap), height);
e.Graphics.FillRectangle(brush, (width / 2) + FramesToPixels(this.RightGap), 0, (width / 2) - FramesToPixels(this.RightGap), height); e.Graphics.FillRectangle(brush, (width / 2) + FramesToPixels(RightGap), 0, (width / 2) - FramesToPixels(RightGap), height);
brush.Color = Color.White; brush.Color = Color.White;
if (this.LeftGap <= 12) if (LeftGap <= 12)
{ {
e.Graphics.DrawString(GetSubtitleLabel(1000, GetLeftOutCue()), UiUtil.GetDefaultFont(), brush, new RectangleF(5, 5, (width / 2) - FramesToPixels(this.LeftGap) - 10, height - 10)); e.Graphics.DrawString(GetSubtitleLabel(1000, GetLeftOutCue()), UiUtil.GetDefaultFont(), brush, new RectangleF(5, 5, (width / 2) - FramesToPixels(LeftGap) - 10, height - 10));
} }
if (this.RightGap <= 12) if (RightGap <= 12)
{ {
e.Graphics.DrawString(GetSubtitleLabel(GetRightInCue(), 5000), UiUtil.GetDefaultFont(), brush, new RectangleF((width / 2) + FramesToPixels(this.RightGap) + 5, 5, (width / 2) - FramesToPixels(this.RightGap) - 10, height - 10)); e.Graphics.DrawString(GetSubtitleLabel(GetRightInCue(), 5000), UiUtil.GetDefaultFont(), brush, new RectangleF((width / 2) + FramesToPixels(RightGap) + 5, 5, (width / 2) - FramesToPixels(RightGap) - 10, height - 10));
} }
// Shot change // Shot change
if (this.ShowShotChange) if (ShowShotChange)
{ {
brush.Color = Color.PaleGreen; brush.Color = Color.PaleGreen;
e.Graphics.FillRectangle(brush, (width / 2) - (1.5f), 0, 3f, height); e.Graphics.FillRectangle(brush, (width / 2) - (1.5f), 0, 3f, height);
@ -128,24 +123,24 @@ namespace Nikse.SubtitleEdit.Controls
private float FramesToPixels(float frames) private float FramesToPixels(float frames)
{ {
return (Size.Width / (this.FrameRate * 3)) * frames; return (Size.Width / (FrameRate * 3)) * frames;
} }
private double GetLeftOutCue() private double GetLeftOutCue()
{ {
return 3000 - (this.LeftGap * (1000 / this.FrameRate)); return 3000 - (LeftGap * (1000 / FrameRate));
} }
private double GetRightInCue() private double GetRightInCue()
{ {
return 3000 + (this.RightGap * (1000 / this.FrameRate)); return 3000 + (RightGap * (1000 / FrameRate));
} }
private string GetSubtitleLabel(double start, double end) private string GetSubtitleLabel(double start, double end)
{ {
var timeCodeStart = new TimeCode(start); var timeCodeStart = new TimeCode(start);
var timeCodeEnd = new TimeCode(end); var timeCodeEnd = new TimeCode(end);
return timeCodeStart.ToString() + " --> " + timeCodeEnd.ToString() + Environment.NewLine + this.PreviewText; return timeCodeStart + " --> " + timeCodeEnd + Environment.NewLine + PreviewText;
} }
} }
} }

View File

@ -10,7 +10,7 @@ using Nikse.SubtitleEdit.Logic;
namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
{ {
public partial class BeautifyTimeCodes : Form public sealed partial class BeautifyTimeCodes : Form
{ {
private readonly Subtitle _subtitle; private readonly Subtitle _subtitle;
private readonly VideoInfo _videoInfo; private readonly VideoInfo _videoInfo;
@ -80,13 +80,24 @@ namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
if (_videoFileName != null) if (_videoFileName != null)
{ {
// Load time codes // Load time codes
this._timeCodes = TimeCodesFileHelper.FromDisk(videoFileName); _timeCodes = TimeCodesFileHelper.FromDisk(videoFileName);
this._shotChanges = shotChanges; _shotChanges = shotChanges;
// Check if ffprobe is available // Check if ffprobe is available
var ffProbePath = Path.GetDirectoryName(Configuration.Settings.General.FFmpegLocation) + Path.DirectorySeparatorChar + "ffprobe" + Path.GetExtension(Configuration.Settings.General.FFmpegLocation); var isFfProbeAvailable = false;
var isffProbeAvailable = !string.IsNullOrEmpty(ffProbePath) && File.Exists(ffProbePath); if (!string.IsNullOrEmpty(Configuration.Settings.General.FFmpegLocation))
if (!isffProbeAvailable) {
var ffProbePath = Path.Combine(Path.GetDirectoryName(Configuration.Settings.General.FFmpegLocation), "ffprobe.exe");
if (Configuration.IsRunningOnWindows)
{
isFfProbeAvailable = File.Exists(ffProbePath);
}
else
{
isFfProbeAvailable = true;
}
}
if (!isFfProbeAvailable)
{ {
checkBoxExtractExactTimeCodes.Enabled = false; checkBoxExtractExactTimeCodes.Enabled = false;
checkBoxExtractExactTimeCodes.Checked = false; checkBoxExtractExactTimeCodes.Checked = false;
@ -234,8 +245,8 @@ namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
{ {
if (form.ShowDialog(this) == DialogResult.OK) if (form.ShowDialog(this) == DialogResult.OK)
{ {
this._shotChanges = form.ShotChangesInSeconds; _shotChanges = form.ShotChangesInSeconds;
this.ShotChangesInSeconds = form.ShotChangesInSeconds; ShotChangesInSeconds = form.ShotChangesInSeconds;
ShotChangeHelper.SaveShotChanges(_videoFileName, form.ShotChangesInSeconds); ShotChangeHelper.SaveShotChanges(_videoFileName, form.ShotChangesInSeconds);
RefreshControls(); RefreshControls();
} }
@ -268,12 +279,12 @@ namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
FixedSubtitle = new Subtitle(_subtitle); FixedSubtitle = new Subtitle(_subtitle);
TimeCodesBeautifier timeCodesBeautifier = new TimeCodesBeautifier( TimeCodesBeautifier timeCodesBeautifier = new TimeCodesBeautifier(
FixedSubtitle, FixedSubtitle,
_frameRate, _frameRate,
checkBoxExtractExactTimeCodes.Checked ? _timeCodes : new List<double>(), // ditto checkBoxExtractExactTimeCodes.Checked ? _timeCodes : new List<double>(), // ditto
checkBoxSnapToShotChanges.Checked ? _shotChanges : new List<double>() checkBoxSnapToShotChanges.Checked ? _shotChanges : new List<double>()
); );
timeCodesBeautifier.ProgressChanged += delegate(double progress) timeCodesBeautifier.ProgressChanged += delegate (double progress)
{ {
progressBar.Value = Convert.ToInt32(progress * 100); progressBar.Value = Convert.ToInt32(progress * 100);
Application.DoEvents(); Application.DoEvents();

View File

@ -1,7 +1,7 @@
 
namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
{ {
partial class BeautifyTimeCodesProfile sealed partial class BeautifyTimeCodesProfile
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.

View File

@ -5,7 +5,7 @@ using Nikse.SubtitleEdit.Logic;
namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
{ {
public partial class BeautifyTimeCodesProfile : Form public sealed partial class BeautifyTimeCodesProfile : Form
{ {
private readonly double _frameRate; private readonly double _frameRate;

View File

@ -1,6 +1,6 @@
namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
{ {
partial class BeautifyTimeCodesProfileSimple sealed partial class BeautifyTimeCodesProfileSimple
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.

View File

@ -7,7 +7,7 @@ using Nikse.SubtitleEdit.Core.SubtitleFormats;
namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
{ {
public partial class BeautifyTimeCodesProfileSimple : Form public sealed partial class BeautifyTimeCodesProfileSimple : Form
{ {
private readonly double _frameRate; private readonly double _frameRate;

View File

@ -36,8 +36,9 @@ namespace Nikse.SubtitleEdit.Logic
{ {
_timeCodes = new List<double>(); _timeCodes = new List<double>();
} }
var ffProbePath = Path.GetDirectoryName(Configuration.Settings.General.FFmpegLocation) + Path.DirectorySeparatorChar + "ffprobe" + Path.GetExtension(Configuration.Settings.General.FFmpegLocation);
if (!Configuration.IsRunningOnWindows && (string.IsNullOrEmpty(ffProbePath) || !File.Exists(ffProbePath))) var ffProbePath = Path.Combine(Path.GetDirectoryName(Configuration.Settings.General.FFmpegLocation), "ffprobe.exe");
if (!Configuration.IsRunningOnWindows && !File.Exists(ffProbePath))
{ {
ffProbePath = "ffprobe"; ffProbePath = "ffprobe";
} }