mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2026-02-17 07:08:42 -06:00
390 lines
11 KiB
C#
390 lines
11 KiB
C#
#if(DEBUG)
|
|
|
|
using FileFlows.VideoNodes;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
namespace VideoNodes.Tests;
|
|
|
|
[TestClass]
|
|
public class VideoHasStreamTests : TestBase
|
|
{
|
|
[TestMethod]
|
|
public void VideoHasStream_Video_H264()
|
|
{
|
|
string file = TestFile_BasicMkv;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Codec = "h264";
|
|
node.Stream = "Video";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Video_H265()
|
|
{
|
|
string file = TestFile_120_mbps_4k_uhd_hevc_10bit;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Codec = "h265";
|
|
node.Stream = "Video";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Video_Hevc()
|
|
{
|
|
string file = TestFile_120_mbps_4k_uhd_hevc_10bit;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Codec = "h265";
|
|
node.Stream = "Video";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Vorbis()
|
|
{
|
|
string file = TestFile_BasicMkv;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Codec = "vorbis";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Channels_Pass()
|
|
{
|
|
string file = TestFile_5dot1;
|
|
var vi = new VideoInfoHelper(FfmpegPath, Logger);
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Channels = "=5.1";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, Logger, false, string.Empty, new LocalFileService());
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Channels_GreaterOrEqual()
|
|
{
|
|
string file = TestFile_5dot1;
|
|
var vi = new VideoInfoHelper(FfmpegPath, Logger);
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Channels = ">=4.5";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, Logger, false, string.Empty, new LocalFileService());
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Channels_Between()
|
|
{
|
|
string file = TestFile_5dot1;
|
|
var vi = new VideoInfoHelper(FfmpegPath, Logger);
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Channels = "5<>5.1";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, Logger, false, string.Empty, new LocalFileService());
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Channels_NotBetween()
|
|
{
|
|
string file = TestFile_5dot1;
|
|
var vi = new VideoInfoHelper(FfmpegPath, Logger);
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Channels = "2><3";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, Logger, false, string.Empty, new LocalFileService());
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Channels_Pass_61()
|
|
{
|
|
var vi = VideoInfoHelper.ParseOutput(Logger,
|
|
@"Input #0, matroska,webm, from '/media/Saw 2.mkv':
|
|
Metadata:
|
|
encoder : libebml v0.7.7 + libmatroska v0.8.1
|
|
creation_time : 2008-09-13T10:11:34.000000Z
|
|
Duration: 01:34:34.46, start: 0.000000, bitrate: 12107 kb/s
|
|
Chapters:
|
|
Chapter #0:0: start 0.000000, end 290.248000
|
|
Metadata:
|
|
title : Der Informant
|
|
Chapter #0:1: start 290.248000, end 414.789000
|
|
Metadata:
|
|
title : Vater und Sohn
|
|
Chapter #0:2: start 414.789000, end 553.886000
|
|
Metadata:
|
|
title : Der Tatort
|
|
Chapter #0:3: start 553.886000, end 649.065000
|
|
Metadata:
|
|
title : Genug zu tun
|
|
Chapter #0:4: start 649.065000, end 914.038000
|
|
Metadata:
|
|
title : S.W.A.T - Spezialeinheit
|
|
Chapter #0:5: start 914.038000, end 1321.611000
|
|
Metadata:
|
|
title : Wo ist er?
|
|
Chapter #0:6: start 1321.611000, end 2045.626000
|
|
Metadata:
|
|
title : Die Spielregeln
|
|
Chapter #0:7: start 2045.626000, end 2580.619000
|
|
Metadata:
|
|
title : Der Entführer
|
|
Chapter #0:8: start 2580.619000, end 3032.446000
|
|
Metadata:
|
|
title : Erinnerungen
|
|
Chapter #0:9: start 3032.446000, end 3637.258000
|
|
Metadata:
|
|
title : Die Grube des Elends
|
|
Chapter #0:10: start 3637.258000, end 3866.654000
|
|
Metadata:
|
|
title : Zahlensuche
|
|
Chapter #0:11: start 3866.654000, end 4111.565000
|
|
Metadata:
|
|
title : Der Hinweis
|
|
Chapter #0:12: start 4111.565000, end 4184.763000
|
|
Metadata:
|
|
title : Auf die harte Tour
|
|
Chapter #0:13: start 4184.763000, end 4318.814000
|
|
Metadata:
|
|
title : Helft mir!
|
|
Chapter #0:14: start 4318.814000, end 4791.161000
|
|
Metadata:
|
|
title : Flucht mit dem Fahrstuhl
|
|
Chapter #0:15: start 4791.161000, end 4980.975000
|
|
Metadata:
|
|
title : Überwindung
|
|
Chapter #0:16: start 4980.975000, end 5328.906000
|
|
Metadata:
|
|
title : Neues Spiel
|
|
Chapter #0:17: start 5328.906000, end 5674.464000
|
|
Metadata:
|
|
title : Abspann
|
|
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn (default)
|
|
Metadata:
|
|
title : Saw 2 - US Directors Cut
|
|
Stream #0:1(ger): Audio: dts (DTS-ES), 48000 Hz, 6.1, fltp, 1536 kb/s (default)");
|
|
|
|
VideoHasStream node = new();
|
|
node.Channels = "=6.1";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(null, Logger, false, string.Empty, new LocalFileService());
|
|
args.Parameters["VideoInfo"] = vi;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Channels_Fail()
|
|
{
|
|
string file = TestFile_BasicMkv;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Channels = "=2";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(2, output);
|
|
}
|
|
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Video_Tag()
|
|
{
|
|
string file = TestFile_Tag;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Codec = "h264";
|
|
node.Stream = "Video";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Lang_Pass()
|
|
{
|
|
string file = TestFile_MovText_Mp4;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Language = "ita";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
node.PreExecute(args);
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(1, output);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void VideoHasStream_Audio_Lang_Fail()
|
|
{
|
|
string file = TestFile_MovText_Mp4;
|
|
var vi = new VideoInfoHelper(FfmpegPath, new TestLogger());
|
|
var vii = vi.Read(file);
|
|
|
|
VideoHasStream node = new();
|
|
node.Language = "mao";
|
|
node.Stream = "Audio";
|
|
|
|
var args = new NodeParameters(file, new TestLogger(), false, string.Empty, null);;
|
|
args.GetToolPathActual = (string tool) => FfmpegPath;
|
|
args.TempPath = TempPath;
|
|
|
|
var vf = new VideoFile();
|
|
vf.PreExecute(args);
|
|
Assert.AreEqual(1, vf.Execute(args));
|
|
|
|
node.PreExecute(args);
|
|
int output = node.Execute(args);
|
|
|
|
Assert.AreEqual(2, output);
|
|
}
|
|
}
|
|
|
|
|
|
#endif |