diff --git a/FFMpegCore.Test/VideoTest.cs b/FFMpegCore.Test/VideoTest.cs
index 9ed832a..242aacf 100644
--- a/FFMpegCore.Test/VideoTest.cs
+++ b/FFMpegCore.Test/VideoTest.cs
@@ -1,7 +1,6 @@
using FFMpegCore.Enums;
using FFMpegCore.FFMPEG.Argument;
using FFMpegCore.FFMPEG.Enums;
-using FFMpegCore.Test;
using FFMpegCore.Test.Resources;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
@@ -32,7 +31,8 @@ public bool Convert(VideoType type, bool multithreaded = false, VideoSize size =
{
Assert.AreEqual(outputVideo.Width, input.Width);
Assert.AreEqual(outputVideo.Height, input.Height);
- } else
+ }
+ else
{
Assert.AreNotEqual(outputVideo.Width, input.Width);
Assert.AreNotEqual(outputVideo.Height, input.Height);
@@ -90,7 +90,8 @@ public void Convert(VideoType type, ArgumentContainer container)
{
Assert.AreEqual(outputVideo.Width, input.Width);
Assert.AreEqual(outputVideo.Height, input.Height);
- } else
+ }
+ else
{
if (scaling.Value.Width != -1)
{
@@ -221,6 +222,29 @@ public void Video_Snapshot()
}
}
+ [TestMethod]
+ public void Video_Snapshot_PersistSnapshot()
+ {
+ var output = Input.OutputLocation(ImageType.Png);
+ try
+ {
+ var input = VideoInfo.FromFileInfo(Input);
+
+ using (var bitmap = Encoder.Snapshot(input, output, persistSnapshotOnFileSystem: true))
+ {
+ Assert.AreEqual(input.Width, bitmap.Width);
+ Assert.AreEqual(input.Height, bitmap.Height);
+ Assert.AreEqual(bitmap.RawFormat, ImageFormat.Png);
+ Assert.IsTrue(File.Exists(output.FullName));
+ }
+ }
+ finally
+ {
+ if (File.Exists(output.FullName))
+ File.Delete(output.FullName);
+ }
+ }
+
[TestMethod]
public void Video_Join()
{
diff --git a/FFMpegCore/FFMPEG/FFMpeg.cs b/FFMpegCore/FFMPEG/FFMpeg.cs
index ae428a4..0f12c3b 100644
--- a/FFMpegCore/FFMPEG/FFMpeg.cs
+++ b/FFMpegCore/FFMPEG/FFMpeg.cs
@@ -48,8 +48,9 @@ public FFMpeg(): base()
/// Output video file
/// Seek position where the thumbnail should be taken.
/// Thumbnail size. If width or height equal 0, the other will be computed automatically.
+ /// By default, it deletes the created image on disk. If set to true, it won't delete the image
/// Bitmap with the requested snapshot.
- public Bitmap Snapshot(VideoInfo source, FileInfo output, Size? size = null, TimeSpan? captureTime = null)
+ public Bitmap Snapshot(VideoInfo source, FileInfo output, Size? size = null, TimeSpan? captureTime = null, bool persistSnapshotOnFileSystem = false)
{
if (captureTime == null)
captureTime = TimeSpan.FromSeconds(source.Duration.TotalSeconds / 3);
@@ -106,7 +107,7 @@ public Bitmap Snapshot(VideoInfo source, FileInfo output, Size? size = null, Tim
}
}
- if (output.Exists)
+ if (output.Exists && !persistSnapshotOnFileSystem)
{
output.Delete();
}