diff --git a/FFMpegCore.Extensions.SkiaSharp/FFMpegCore.Extensions.SkiaSharp.csproj b/FFMpegCore.Extensions.SkiaSharp/FFMpegCore.Extensions.SkiaSharp.csproj
index f055149..d15a7bd 100644
--- a/FFMpegCore.Extensions.SkiaSharp/FFMpegCore.Extensions.SkiaSharp.csproj
+++ b/FFMpegCore.Extensions.SkiaSharp/FFMpegCore.Extensions.SkiaSharp.csproj
@@ -4,6 +4,7 @@
true
Image extension for FFMpegCore using SkiaSharp
5.0.0
+ ../nupkg
ffmpeg ffprobe convert video audio mediafile resize analyze muxing skiasharp
diff --git a/FFMpegCore.Test/FFMpegCore.Test.csproj b/FFMpegCore.Test/FFMpegCore.Test.csproj
index 219315b..b78af1b 100644
--- a/FFMpegCore.Test/FFMpegCore.Test.csproj
+++ b/FFMpegCore.Test/FFMpegCore.Test.csproj
@@ -12,21 +12,21 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
-
+
+
diff --git a/FFMpegCore/Extend/TimeSpanExtensions.cs b/FFMpegCore/Extend/TimeSpanExtensions.cs
new file mode 100644
index 0000000..2d69237
--- /dev/null
+++ b/FFMpegCore/Extend/TimeSpanExtensions.cs
@@ -0,0 +1,15 @@
+namespace FFMpegCore.Extend;
+
+public static class TimeSpanExtensions
+{
+ public static string ToLongString(this TimeSpan timeSpan)
+ {
+ var hours = timeSpan.Hours;
+ if (timeSpan.Days > 0)
+ {
+ hours += timeSpan.Days * 24;
+ }
+
+ return $"-ss {hours:00}:{timeSpan.Minutes:00}:{timeSpan.Seconds:00}.{timeSpan.Milliseconds:000}";
+ }
+}
diff --git a/FFMpegCore/FFMpeg/Arguments/EndSeekArgument.cs b/FFMpegCore/FFMpeg/Arguments/EndSeekArgument.cs
index ea57339..e4e8f5d 100644
--- a/FFMpegCore/FFMpeg/Arguments/EndSeekArgument.cs
+++ b/FFMpegCore/FFMpeg/Arguments/EndSeekArgument.cs
@@ -1,4 +1,6 @@
-namespace FFMpegCore.Arguments
+using FFMpegCore.Extend;
+
+namespace FFMpegCore.Arguments
{
///
/// Represents seek parameter
@@ -12,25 +14,6 @@ public EndSeekArgument(TimeSpan? seekTo)
SeekTo = seekTo;
}
- public string Text
- {
- get
- {
- if (SeekTo.HasValue)
- {
- var hours = SeekTo.Value.Hours;
- if (SeekTo.Value.Days > 0)
- {
- hours += SeekTo.Value.Days * 24;
- }
-
- return $"-to {hours.ToString("00")}:{SeekTo.Value.Minutes.ToString("00")}:{SeekTo.Value.Seconds.ToString("00")}.{SeekTo.Value.Milliseconds.ToString("000")}";
- }
- else
- {
- return string.Empty;
- }
- }
- }
+ public string Text => SeekTo.HasValue ? $"-to {SeekTo.Value.ToLongString()}" : string.Empty;
}
}
diff --git a/FFMpegCore/FFMpeg/Arguments/SeekArgument.cs b/FFMpegCore/FFMpeg/Arguments/SeekArgument.cs
index 8862e76..29cda7f 100644
--- a/FFMpegCore/FFMpeg/Arguments/SeekArgument.cs
+++ b/FFMpegCore/FFMpeg/Arguments/SeekArgument.cs
@@ -1,4 +1,6 @@
-namespace FFMpegCore.Arguments
+using FFMpegCore.Extend;
+
+namespace FFMpegCore.Arguments
{
///
/// Represents seek parameter
@@ -12,25 +14,6 @@ public SeekArgument(TimeSpan? seekTo)
SeekTo = seekTo;
}
- public string Text
- {
- get
- {
- if (SeekTo.HasValue)
- {
- var hours = SeekTo.Value.Hours;
- if (SeekTo.Value.Days > 0)
- {
- hours += SeekTo.Value.Days * 24;
- }
-
- return $"-ss {hours.ToString("00")}:{SeekTo.Value.Minutes.ToString("00")}:{SeekTo.Value.Seconds.ToString("00")}.{SeekTo.Value.Milliseconds.ToString("000")}";
- }
- else
- {
- return string.Empty;
- }
- }
- }
+ public string Text => SeekTo.HasValue ? $"-ss {SeekTo.Value.ToLongString()}" : string.Empty;
}
}
diff --git a/FFMpegCore/FFMpegCore.csproj b/FFMpegCore/FFMpegCore.csproj
index 843bdba..db5abd1 100644
--- a/FFMpegCore/FFMpegCore.csproj
+++ b/FFMpegCore/FFMpegCore.csproj
@@ -3,7 +3,7 @@
true
A .NET Standard FFMpeg/FFProbe wrapper for easily integrating media analysis and conversion into your .NET applications
- 5.0.1
+ 5.0.2
../nupkg
@@ -13,12 +13,12 @@
-
+
-
-
+
+
diff --git a/FFMpegCore/FFProbe/MediaAnalysis.cs b/FFMpegCore/FFProbe/MediaAnalysis.cs
index 53943dc..9fce0fe 100644
--- a/FFMpegCore/FFProbe/MediaAnalysis.cs
+++ b/FFMpegCore/FFProbe/MediaAnalysis.cs
@@ -50,7 +50,7 @@ private MediaFormat ParseFormat(Format analysisFormat)
{
var bitDepth = int.TryParse(stream.BitsPerRawSample, out var bprs) ? bprs :
stream.BitsPerSample;
- return bitDepth == 0 ? null : (int?)bitDepth;
+ return bitDepth == 0 ? null : bitDepth;
}
private VideoStream ParseVideoStream(FFProbeStream stream)
@@ -126,7 +126,7 @@ public static class MediaAnalysisUtils
{
private static readonly Regex DurationRegex = new(@"^(\d+):(\d{1,2}):(\d{1,2})\.(\d{1,3})", RegexOptions.Compiled);
- internal static Dictionary? ToCaseInsensitive(this Dictionary? dictionary)
+ internal static Dictionary ToCaseInsensitive(this Dictionary? dictionary)
{
return dictionary?.ToDictionary(tag => tag.Key, tag => tag.Value, StringComparer.OrdinalIgnoreCase) ?? new Dictionary();
}
@@ -195,11 +195,6 @@ public static TimeSpan ParseDuration(string duration)
}
}
- public static TimeSpan ParseDuration(FFProbeStream ffProbeStream)
- {
- return ParseDuration(ffProbeStream.Duration);
- }
-
public static int ParseRotation(FFProbeStream fFProbeStream)
{
var displayMatrixSideData = fFProbeStream.SideData?.Find(item => item.TryGetValue("side_data_type", out var rawSideDataType) && rawSideDataType.ToString() == "Display Matrix");
diff --git a/FFMpegCore/Helpers/FFProbeHelper.cs b/FFMpegCore/Helpers/FFProbeHelper.cs
index 0c44ab6..ff1ff20 100644
--- a/FFMpegCore/Helpers/FFProbeHelper.cs
+++ b/FFMpegCore/Helpers/FFProbeHelper.cs
@@ -3,27 +3,10 @@
namespace FFMpegCore.Helpers
{
- public class FFProbeHelper
+ public static class FFProbeHelper
{
private static bool _ffprobeVerified;
- public static int Gcd(int first, int second)
- {
- while (first != 0 && second != 0)
- {
- if (first > second)
- {
- first -= second;
- }
- else
- {
- second -= first;
- }
- }
-
- return first == 0 ? second : first;
- }
-
public static void RootExceptionCheck()
{
if (GlobalFFOptions.Current.BinaryFolder == null)