using FileFlows.VideoNodes.FfmpegBuilderNodes.Models;
namespace FileFlows.VideoNodes.FfmpegBuilderNodes;
///
/// Node that starts the FFMPEG Builder
///
public class FfmpegBuilderStart: FfmpegBuilderNode
{
public override string HelpUrl => "https://fileflows.com/docs/plugins/video-nodes/ffmpeg-builder";
///
/// The number of inputs into this node
///
public override int Inputs => 1;
///
/// The number of outputs from this node
///
public override int Outputs => 1;
///
/// The icon for this node
///
public override string Icon => "far fa-file-video";
///
/// The type of this node
///
public override FlowElementType Type => FlowElementType.BuildStart;
private Dictionary _Variables;
public override Dictionary Variables => _Variables;
public FfmpegBuilderStart()
{
_Variables = new Dictionary()
{
{ MODEL_KEY, new FfmpegModel(new VideoInfo()) }
};
}
///
/// Executes the node
///
/// The node arguments
/// the output return
public override int Execute(NodeParameters args)
{
VideoInfo videoInfo = GetVideoInfo(args);
if (videoInfo == null)
{
args.FailureReason = "No VideoInformation found";
args.Logger?.ELog(args.FailureReason);
return -1;
}
this.Model = Models.FfmpegModel.CreateModel(videoInfo);
args.Logger.ILog("FFMPEG Builder File: " + videoInfo.FileName);
foreach (var track in videoInfo.VideoStreams)
args.Logger.ILog($"Video Track '{track.Codec}' ({track.Width}x{track.Height})");
foreach (var track in videoInfo.AudioStreams)
args.Logger.ILog("Audio Track: " + track.Codec);
foreach (var track in videoInfo.SubtitleStreams)
args.Logger.ILog("Subtitle Track: " + track.Codec);
return 1;
}
}