Add auto dl of ffprobe

This commit is contained in:
niksedk 2023-08-22 19:35:14 +02:00
parent 4fe20da148
commit 265d67b1f9
10 changed files with 58 additions and 17 deletions

View File

@ -24,7 +24,9 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=assa/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Cuda/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Downloader/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ffmpeg/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ffprobe/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Fmpeg/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Immersive/@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>

View File

@ -169,7 +169,7 @@ namespace Nikse.SubtitleEdit.Forms
return;
}
using (var form = new DownloadFfmpeg { AutoClose = true })
using (var form = new DownloadFfmpeg("FFmpeg") { AutoClose = true })
{
if (form.ShowDialog(this) == DialogResult.OK && !string.IsNullOrEmpty(form.FFmpegPath))
{

View File

@ -53,7 +53,7 @@ namespace Nikse.SubtitleEdit.Forms
checkBoxExtractTimeCodes.Text = LanguageSettings.Current.AddWaveformBatch.ExtractTimeCodes;
checkBoxExtractTimeCodes.Left = checkBoxGenerateShotChanges.Left - checkBoxExtractTimeCodes.Width - 20;
checkBoxExtractTimeCodes.Visible = BeautifyTimeCodes.BeautifyTimeCodes.IsFfProbeAvailable();
checkBoxExtractTimeCodes.Visible = BeautifyTimeCodes.BeautifyTimeCodes.IsFfProbeAvailable(this);
if (checkBoxExtractTimeCodes.Visible)
{
@ -308,7 +308,7 @@ namespace Nikse.SubtitleEdit.Forms
return;
}
using (var form = new DownloadFfmpeg())
using (var form = new DownloadFfmpeg("FFmpeg"))
{
if (form.ShowDialog(this) == DialogResult.OK && !string.IsNullOrEmpty(form.FFmpegPath))
{

View File

@ -128,11 +128,11 @@ namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
//
// panelExtractTimeCodes
//
this.panelExtractTimeCodes.Controls.Add(this.buttonCancelTimeCodes);
this.panelExtractTimeCodes.Controls.Add(this.labelExtractTimeCodesProgress);
this.panelExtractTimeCodes.Controls.Add(this.progressBarExtractTimeCodes);
this.panelExtractTimeCodes.Controls.Add(this.buttonExtractTimeCodes);
this.panelExtractTimeCodes.Controls.Add(this.labelTimeCodesStatus);
this.panelExtractTimeCodes.Controls.Add(this.buttonCancelTimeCodes);
this.panelExtractTimeCodes.Location = new System.Drawing.Point(0, 27);
this.panelExtractTimeCodes.Name = "panelExtractTimeCodes";
this.panelExtractTimeCodes.Size = new System.Drawing.Size(546, 78);

View File

@ -85,7 +85,7 @@ namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
_shotChanges = shotChanges;
// Check if ffprobe is available
if (!IsFfProbeAvailable())
if (!IsFfProbeAvailable(this))
{
checkBoxExtractExactTimeCodes.Enabled = false;
checkBoxExtractExactTimeCodes.Checked = false;
@ -322,12 +322,34 @@ namespace Nikse.SubtitleEdit.Forms.BeautifyTimeCodes
_abortTimeCodes = true;
}
public static bool IsFfProbeAvailable()
public static bool IsFfProbeAvailable(Form parentForm)
{
return !Configuration.IsRunningOnWindows || (
!string.IsNullOrWhiteSpace(Configuration.Settings.General.FFmpegLocation)
&& File.Exists(Path.Combine(Path.GetDirectoryName(Configuration.Settings.General.FFmpegLocation), "ffprobe.exe"))
);
if (!Configuration.IsRunningOnWindows)
{
return true;
}
var ffprobeExists = !string.IsNullOrWhiteSpace(Configuration.Settings.General.FFmpegLocation)
&& File.Exists(Path.Combine(Path.GetDirectoryName(Configuration.Settings.General.FFmpegLocation), "ffprobe.exe"));
if (!ffprobeExists)
{
if (MessageBox.Show(string.Format(LanguageSettings.Current.Settings.DownloadX, "ffprobe"), "Subtitle Edit", MessageBoxButtons.YesNoCancel) != DialogResult.Yes)
{
return false;
}
using (var form = new DownloadFfmpeg("ffprobe"))
{
if (form.ShowDialog(parentForm) == DialogResult.OK)
{
return !string.IsNullOrWhiteSpace(Configuration.Settings.General.FFmpegLocation)
&& File.Exists(Path.Combine(Path.GetDirectoryName(Configuration.Settings.General.FFmpegLocation), "ffprobe.exe"));
}
}
}
return ffprobeExists;
}
}
}

View File

@ -14,13 +14,15 @@ namespace Nikse.SubtitleEdit.Forms
public string FFmpegPath { get; internal set; }
public bool AutoClose { get; internal set; }
private readonly CancellationTokenSource _cancellationTokenSource;
private readonly string _title;
public DownloadFfmpeg()
public DownloadFfmpeg(string title)
{
UiUtil.PreInitialize(this);
InitializeComponent();
UiUtil.FixFonts(this);
Text = string.Format(LanguageSettings.Current.Settings.DownloadX, "FFmpeg");
_title = title;
Text = string.Format(LanguageSettings.Current.Settings.DownloadX, title);
buttonOK.Text = LanguageSettings.Current.General.Ok;
buttonCancel.Text = LanguageSettings.Current.General.Cancel;
UiUtil.FixLargeFonts(this, buttonOK);
@ -49,6 +51,10 @@ namespace Nikse.SubtitleEdit.Forms
private void DownloadFfmpeg_Shown(object sender, EventArgs e)
{
var url = "https://github.com/SubtitleEdit/support-files/raw/master/ffpmeg/ffmpeg-" + IntPtr.Size * 8 + ".zip";
if (_title.Contains("ffprobe", StringComparison.OrdinalIgnoreCase))
{
url = "https://github.com/SubtitleEdit/support-files/releases/download/ffprove-6.0/ffprobe.zip";
}
try
{
@ -133,7 +139,7 @@ namespace Nikse.SubtitleEdit.Forms
}
buttonOK.Enabled = true;
labelPleaseWait.Text = string.Format(LanguageSettings.Current.SettingsFfmpeg.XDownloadOk, "ffmpeg");
labelPleaseWait.Text = string.Format(LanguageSettings.Current.SettingsFfmpeg.XDownloadOk, _title);
}
}
}

View File

@ -377,7 +377,7 @@ namespace Nikse.SubtitleEdit.Forms
private void buttonDownloadFfmpeg_Click(object sender, EventArgs e)
{
using (var form = new DownloadFfmpeg())
using (var form = new DownloadFfmpeg("FFmpeg"))
{
if (form.ShowDialog(this) == DialogResult.OK && !string.IsNullOrEmpty(form.FFmpegPath))
{

View File

@ -35198,7 +35198,7 @@ namespace Nikse.SubtitleEdit.Forms
return false;
}
using (var form = new DownloadFfmpeg())
using (var form = new DownloadFfmpeg("FFmpeg"))
{
if (form.ShowDialog(this) == DialogResult.OK && !string.IsNullOrEmpty(form.FFmpegPath))
{
@ -35672,6 +35672,17 @@ namespace Nikse.SubtitleEdit.Forms
return;
}
if (string.IsNullOrEmpty(_videoFileName))
{
MessageBox.Show(LanguageSettings.Current.General.NoVideoLoaded);
return;
}
if (!RequireFfmpegOk())
{
return;
}
if (onlySelectedLines)
{
var selectedIndices = SubtitleListview1.GetSelectedIndices();

View File

@ -3046,7 +3046,7 @@ namespace Nikse.SubtitleEdit.Forms.Options
private void buttonDownloadFfmpeg_Click(object sender, EventArgs e)
{
using (var form = new DownloadFfmpeg())
using (var form = new DownloadFfmpeg("FFmpeg"))
{
if (form.ShowDialog(this) == DialogResult.OK && !string.IsNullOrEmpty(form.FFmpegPath))
{

View File

@ -419,7 +419,7 @@ namespace Nikse.SubtitleEdit.Forms.ShotChanges
private void buttonDownloadFfmpeg_Click(object sender, EventArgs e)
{
using (var form = new DownloadFfmpeg())
using (var form = new DownloadFfmpeg("FFmpeg"))
{
if (form.ShowDialog(this) == DialogResult.OK && !string.IsNullOrEmpty(form.FFmpegPath))
{