mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-05 20:54:31 +13:00
ScreenRecordForm changes
This commit is contained in:
parent
f8aeb45024
commit
7617c98bf9
2 changed files with 90 additions and 80 deletions
|
@ -134,7 +134,6 @@ SSH.NET: http://sshnet.codeplex.com
|
|||
Icons: http://p.yusukekamiyamane.com
|
||||
ImageListView: http://code.google.com/p/imagelistview
|
||||
AviWriter: https://code.google.com/p/aforge
|
||||
AsyncBridge: http://omermor.github.com/AsyncBridge
|
||||
FFmpeg Windows builds: http://ffmpeg.zeranoe.com/builds
|
||||
7-Zip: http://www.7-zip.org
|
||||
SevenZipSharp: http://sevenzipsharp.codeplex.com
|
||||
|
|
|
@ -136,98 +136,111 @@ public void StartRecording(TaskSettings TaskSettings)
|
|||
|
||||
Task.Run(() =>
|
||||
{
|
||||
if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.AVI)
|
||||
try
|
||||
{
|
||||
path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, "avi"));
|
||||
}
|
||||
else if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.FFmpeg)
|
||||
{
|
||||
path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, TaskSettings.CaptureSettings.FFmpegOptions.Extension));
|
||||
}
|
||||
else
|
||||
{
|
||||
path = Program.ScreenRecorderCacheFilePath;
|
||||
}
|
||||
|
||||
ScreencastOptions options = new ScreencastOptions()
|
||||
{
|
||||
CaptureArea = captureRectangle,
|
||||
GIFFPS = TaskSettings.CaptureSettings.GIFFPS,
|
||||
ScreenRecordFPS = TaskSettings.CaptureSettings.ScreenRecordFPS,
|
||||
OutputPath = path,
|
||||
Duration = TaskSettings.CaptureSettings.ScreenRecordFixedDuration ? TaskSettings.CaptureSettings.ScreenRecordDuration : 0,
|
||||
AVI = TaskSettings.CaptureSettings.AVIOptions,
|
||||
FFmpeg = TaskSettings.CaptureSettings.FFmpegOptions,
|
||||
DrawCursor = TaskSettings.CaptureSettings.ShowCursor
|
||||
};
|
||||
|
||||
screenRecorder = new ScreenRecorder(options, captureRectangle, TaskSettings.CaptureSettings.ScreenRecordOutput);
|
||||
|
||||
int delay = (int)(TaskSettings.CaptureSettings.ScreenRecordStartDelay * 1000);
|
||||
|
||||
if (delay > 0)
|
||||
{
|
||||
Thread.Sleep(delay);
|
||||
}
|
||||
|
||||
this.InvokeSafe(() =>
|
||||
{
|
||||
screenRegionManager.ChangeColor(Color.FromArgb(0, 255, 0));
|
||||
TrayIcon.Icon = Resources.control_record.ToIcon();
|
||||
});
|
||||
|
||||
screenRecorder.StartRecording();
|
||||
|
||||
if (screenRegionManager != null)
|
||||
{
|
||||
this.InvokeSafe(() => screenRegionManager.Dispose());
|
||||
}
|
||||
|
||||
if (screenRecorder != null)
|
||||
{
|
||||
TrayIcon.Icon = Resources.camcorder_pencil.ToIcon();
|
||||
|
||||
string sourceFilePath = path;
|
||||
|
||||
if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.GIF)
|
||||
if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.AVI)
|
||||
{
|
||||
if (TaskSettings.CaptureSettings.RunScreencastCLI)
|
||||
{
|
||||
sourceFilePath = Path.ChangeExtension(Program.ScreenRecorderCacheFilePath, "gif");
|
||||
}
|
||||
else
|
||||
{
|
||||
sourceFilePath = path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, "gif"));
|
||||
}
|
||||
screenRecorder.SaveAsGIF(sourceFilePath, TaskSettings.ImageSettings.ImageGIFQuality);
|
||||
path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, "avi"));
|
||||
}
|
||||
else if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.FFmpeg)
|
||||
{
|
||||
path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, TaskSettings.CaptureSettings.FFmpegOptions.Extension));
|
||||
}
|
||||
else
|
||||
{
|
||||
path = Program.ScreenRecorderCacheFilePath;
|
||||
}
|
||||
|
||||
if (TaskSettings.CaptureSettings.RunScreencastCLI)
|
||||
ScreencastOptions options = new ScreencastOptions()
|
||||
{
|
||||
VideoEncoder encoder = Program.Settings.VideoEncoders[TaskSettings.CaptureSettings.VideoEncoderSelected];
|
||||
path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, encoder.OutputExtension));
|
||||
screenRecorder.EncodeUsingCommandLine(encoder, sourceFilePath, path);
|
||||
CaptureArea = captureRectangle,
|
||||
GIFFPS = TaskSettings.CaptureSettings.GIFFPS,
|
||||
ScreenRecordFPS = TaskSettings.CaptureSettings.ScreenRecordFPS,
|
||||
OutputPath = path,
|
||||
Duration = TaskSettings.CaptureSettings.ScreenRecordFixedDuration ? TaskSettings.CaptureSettings.ScreenRecordDuration : 0,
|
||||
AVI = TaskSettings.CaptureSettings.AVIOptions,
|
||||
FFmpeg = TaskSettings.CaptureSettings.FFmpegOptions,
|
||||
DrawCursor = TaskSettings.CaptureSettings.ShowCursor
|
||||
};
|
||||
|
||||
screenRecorder = new ScreenRecorder(options, captureRectangle, TaskSettings.CaptureSettings.ScreenRecordOutput);
|
||||
|
||||
int delay = (int)(TaskSettings.CaptureSettings.ScreenRecordStartDelay * 1000);
|
||||
|
||||
if (delay > 0)
|
||||
{
|
||||
Thread.Sleep(delay);
|
||||
}
|
||||
|
||||
this.InvokeSafe(() =>
|
||||
{
|
||||
screenRegionManager.ChangeColor(Color.FromArgb(0, 255, 0));
|
||||
TrayIcon.Icon = Resources.control_record.ToIcon();
|
||||
});
|
||||
|
||||
screenRecorder.StartRecording();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (screenRegionManager != null)
|
||||
{
|
||||
this.InvokeSafe(() => screenRegionManager.Dispose());
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (screenRecorder != null)
|
||||
{
|
||||
TrayIcon.Icon = Resources.camcorder_pencil.ToIcon();
|
||||
|
||||
string sourceFilePath = path;
|
||||
|
||||
if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.GIF)
|
||||
{
|
||||
if (TaskSettings.CaptureSettings.RunScreencastCLI)
|
||||
{
|
||||
sourceFilePath = Path.ChangeExtension(Program.ScreenRecorderCacheFilePath, "gif");
|
||||
}
|
||||
else
|
||||
{
|
||||
sourceFilePath = path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, "gif"));
|
||||
}
|
||||
|
||||
screenRecorder.SaveAsGIF(sourceFilePath, TaskSettings.ImageSettings.ImageGIFQuality);
|
||||
}
|
||||
|
||||
if (TaskSettings.CaptureSettings.RunScreencastCLI)
|
||||
{
|
||||
VideoEncoder encoder = Program.Settings.VideoEncoders[TaskSettings.CaptureSettings.VideoEncoderSelected];
|
||||
path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, encoder.OutputExtension));
|
||||
screenRecorder.EncodeUsingCommandLine(encoder, sourceFilePath, path);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (screenRecorder != null)
|
||||
{
|
||||
if (TaskSettings.CaptureSettings.RunScreencastCLI && !string.IsNullOrEmpty(screenRecorder.CachePath) && File.Exists(screenRecorder.CachePath))
|
||||
{
|
||||
File.Delete(screenRecorder.CachePath);
|
||||
}
|
||||
|
||||
screenRecorder.Dispose();
|
||||
screenRecorder = null;
|
||||
}
|
||||
}
|
||||
},
|
||||
() =>
|
||||
{
|
||||
if (screenRecorder != null)
|
||||
{
|
||||
if (TaskSettings.CaptureSettings.RunScreencastCLI && !string.IsNullOrEmpty(screenRecorder.CachePath) && File.Exists(screenRecorder.CachePath))
|
||||
{
|
||||
File.Delete(screenRecorder.CachePath);
|
||||
}
|
||||
|
||||
screenRecorder.Dispose();
|
||||
screenRecorder = null;
|
||||
}
|
||||
|
||||
if (TrayIcon.Visible)
|
||||
{
|
||||
TrayIcon.Visible = false;
|
||||
}
|
||||
|
||||
IsRecording = false;
|
||||
|
||||
if (!string.IsNullOrEmpty(path) && File.Exists(path))
|
||||
{
|
||||
if (TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.UploadImageToHost))
|
||||
|
@ -244,8 +257,6 @@ public void StartRecording(TaskSettings TaskSettings)
|
|||
TaskHelpers.ShowResultNotifications(path, TaskSettings, path);
|
||||
}
|
||||
}
|
||||
|
||||
IsRecording = false;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue