aboutsummaryrefslogtreecommitdiff
path: root/src/Jellyfin.MediaEncoding.Keyframes/KeyframeExtractor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Jellyfin.MediaEncoding.Keyframes/KeyframeExtractor.cs')
-rw-r--r--src/Jellyfin.MediaEncoding.Keyframes/KeyframeExtractor.cs25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/Jellyfin.MediaEncoding.Keyframes/KeyframeExtractor.cs b/src/Jellyfin.MediaEncoding.Keyframes/KeyframeExtractor.cs
index 641998273..5304a55f8 100644
--- a/src/Jellyfin.MediaEncoding.Keyframes/KeyframeExtractor.cs
+++ b/src/Jellyfin.MediaEncoding.Keyframes/KeyframeExtractor.cs
@@ -32,25 +32,38 @@ namespace Jellyfin.MediaEncoding.Keyframes
/// <returns>An instance of <see cref="KeyframeData"/>.</returns>
public KeyframeData GetKeyframeData(string filePath, string ffProbePath, string ffToolPath)
{
- var extension = Path.GetExtension(filePath);
- if (string.Equals(extension, ".mkv", StringComparison.OrdinalIgnoreCase))
+ var extension = Path.GetExtension(filePath.AsSpan());
+ if (extension.Equals(".mkv", StringComparison.OrdinalIgnoreCase))
{
try
{
return MatroskaKeyframeExtractor.GetKeyframeData(filePath);
}
- catch (InvalidOperationException ex)
+ catch (Exception ex)
{
- _logger.LogError(ex, "{MatroskaKeyframeExtractor} failed to extract keyframes", nameof(MatroskaKeyframeExtractor));
+ _logger.LogError(ex, "{ExtractorType} failed to extract keyframes", nameof(MatroskaKeyframeExtractor));
}
}
- if (!string.IsNullOrEmpty(ffToolPath))
+ try
{
return FfToolKeyframeExtractor.GetKeyframeData(ffToolPath, filePath);
}
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "{ExtractorType} failed to extract keyframes", nameof(FfToolKeyframeExtractor));
+ }
+
+ try
+ {
+ return FfProbeKeyframeExtractor.GetKeyframeData(ffProbePath, filePath);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "{ExtractorType} failed to extract keyframes", nameof(FfProbeKeyframeExtractor));
+ }
- return FfProbeKeyframeExtractor.GetKeyframeData(ffProbePath, filePath);
+ return new KeyframeData(0, Array.Empty<long>());
}
}
}