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(); }