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; } }