From 6b39f1168755bbbaac8e511cce7eb17ecfd9f628 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sat, 18 Oct 2025 15:58:40 +0300 Subject: [PATCH] Add raw response from ffprobe in MediaAnalysis --- FFMpegCore/FFProbe/FFProbe.cs | 2 ++ FFMpegCore/FFProbe/FFProbeAnalysis.cs | 2 ++ FFMpegCore/FFProbe/IMediaAnalysis.cs | 1 + FFMpegCore/FFProbe/MediaAnalysis.cs | 4 +++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/FFMpegCore/FFProbe/FFProbe.cs b/FFMpegCore/FFProbe/FFProbe.cs index e199376..57dc884 100644 --- a/FFMpegCore/FFProbe/FFProbe.cs +++ b/FFMpegCore/FFProbe/FFProbe.cs @@ -174,7 +174,9 @@ public static class FFProbe throw new FormatNullException(); } + ffprobeAnalysis.OutputData = instance.OutputData; ffprobeAnalysis.ErrorData = instance.ErrorData; + return new MediaAnalysis(ffprobeAnalysis); } diff --git a/FFMpegCore/FFProbe/FFProbeAnalysis.cs b/FFMpegCore/FFProbe/FFProbeAnalysis.cs index 7176ce1..5a7eee9 100644 --- a/FFMpegCore/FFProbe/FFProbeAnalysis.cs +++ b/FFMpegCore/FFProbe/FFProbeAnalysis.cs @@ -11,6 +11,8 @@ public class FFProbeAnalysis [JsonPropertyName("chapters")] public List Chapters { get; set; } = null!; + [JsonIgnore] public IReadOnlyList OutputData { get; set; } = new List(); + [JsonIgnore] public IReadOnlyList ErrorData { get; set; } = new List(); } diff --git a/FFMpegCore/FFProbe/IMediaAnalysis.cs b/FFMpegCore/FFProbe/IMediaAnalysis.cs index 72d1670..9597221 100644 --- a/FFMpegCore/FFProbe/IMediaAnalysis.cs +++ b/FFMpegCore/FFProbe/IMediaAnalysis.cs @@ -13,5 +13,6 @@ public interface IMediaAnalysis List VideoStreams { get; } List AudioStreams { get; } List SubtitleStreams { get; } + IReadOnlyList OutputData { get; } IReadOnlyList ErrorData { get; } } diff --git a/FFMpegCore/FFProbe/MediaAnalysis.cs b/FFMpegCore/FFProbe/MediaAnalysis.cs index 4129e63..75744f9 100644 --- a/FFMpegCore/FFProbe/MediaAnalysis.cs +++ b/FFMpegCore/FFProbe/MediaAnalysis.cs @@ -9,10 +9,11 @@ internal class MediaAnalysis : IMediaAnalysis internal MediaAnalysis(FFProbeAnalysis analysis) { Format = ParseFormat(analysis.Format); - Chapters = analysis.Chapters.Select(c => ParseChapter(c)).ToList(); + Chapters = analysis.Chapters.Select(ParseChapter).ToList(); VideoStreams = analysis.Streams.Where(stream => stream.CodecType == "video").Select(ParseVideoStream).ToList(); AudioStreams = analysis.Streams.Where(stream => stream.CodecType == "audio").Select(ParseAudioStream).ToList(); SubtitleStreams = analysis.Streams.Where(stream => stream.CodecType == "subtitle").Select(ParseSubtitleStream).ToList(); + OutputData = analysis.OutputData; ErrorData = analysis.ErrorData; } @@ -29,6 +30,7 @@ internal class MediaAnalysis : IMediaAnalysis public List VideoStreams { get; } public List AudioStreams { get; } public List SubtitleStreams { get; } + public IReadOnlyList OutputData { get; } public IReadOnlyList ErrorData { get; } private MediaFormat ParseFormat(Format analysisFormat)