diff --git a/VideoNodes/InputNodes/VideoFile.cs b/VideoNodes/InputNodes/VideoFile.cs index 2bb355b1..fa9f823b 100644 --- a/VideoNodes/InputNodes/VideoFile.cs +++ b/VideoNodes/InputNodes/VideoFile.cs @@ -24,6 +24,7 @@ namespace FileFlows.VideoNodes { "vi.Duration", 1800 }, { "vi.VideoInfo", new VideoInfo() { + Bitrate = 10_000_000, VideoStreams = new List { new VideoStream { } }, diff --git a/VideoNodes/Tests/VideoInfoHelperTests.cs b/VideoNodes/Tests/VideoInfoHelperTests.cs index d59d735a..b6a5117c 100644 --- a/VideoNodes/Tests/VideoInfoHelperTests.cs +++ b/VideoNodes/Tests/VideoInfoHelperTests.cs @@ -17,7 +17,8 @@ namespace VideoNodes.Tests public void VideoInfoTest_JudgeDreed() { var vi = new VideoInfoHelper(@"C:\utils\ffmpeg\ffmpeg.exe", new TestLogger()); - vi.Read(@"D:\videos\unprocessed\Hellboy 2019 Bluray-1080p.mp4"); + var info = vi.Read(@"D:\videos\unprocessed\Injustice.mkv"); + Assert.IsNotNull(info); } diff --git a/VideoNodes/VideoInfo.cs b/VideoNodes/VideoInfo.cs index f713250f..e3f8e235 100644 --- a/VideoNodes/VideoInfo.cs +++ b/VideoNodes/VideoInfo.cs @@ -3,6 +3,10 @@ namespace FileFlows.VideoNodes public class VideoInfo { public string FileName { get; set; } + /// + /// Gets or sets the bitrate in bytes per second + /// + public float Bitrate { get; set; } public List VideoStreams { get; set; } = new List(); public List AudioStreams { get; set; } = new List(); public List SubtitleStreams { get; set; } = new List(); @@ -24,7 +28,7 @@ namespace FileFlows.VideoNodes public string Title { get; set; } = ""; /// - /// The bitrate(BPS) of the video stream + /// The bitrate(BPS) of the video stream in bytes per second /// public float Bitrate { get; set; } diff --git a/VideoNodes/VideoInfoHelper.cs b/VideoNodes/VideoInfoHelper.cs index 2f6a9f84..2dc2fb43 100644 --- a/VideoNodes/VideoInfoHelper.cs +++ b/VideoNodes/VideoInfoHelper.cs @@ -67,6 +67,15 @@ namespace FileFlows.VideoNodes var streamMatches = rgxStreams.Matches(output); int streamIndex = 0; + + // get a rough estimate, bitrate: 346 kb/s + var rgxBitrate = new Regex(@"(?<=(bitrate: ))[\d\.]+(?!=( kb/s))"); + var brMatch = rgxBitrate.Match(output); + if (brMatch.Success) + { + vi.Bitrate = float.Parse(brMatch.Value) * 1_000; // to convert to b/s + } + int subtitleIndex = 1; foreach (Match sm in streamMatches) { diff --git a/VideoNodes/VideoNodes.csproj b/VideoNodes/VideoNodes.csproj index a456479e..a68a0b59 100644 Binary files a/VideoNodes/VideoNodes.csproj and b/VideoNodes/VideoNodes.csproj differ