mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2026-02-17 07:08:42 -06:00
89 lines
3.0 KiB
C#
89 lines
3.0 KiB
C#
namespace FileFlows.VideoNodes
|
|
{
|
|
using FileFlows.Plugin;
|
|
public abstract class VideoNode : Node
|
|
{
|
|
public override string Icon => "fas fa-video";
|
|
|
|
protected string GetFFMpegExe(NodeParameters args)
|
|
{
|
|
string ffmpeg = args.GetToolPath("FFMpeg");
|
|
if (string.IsNullOrEmpty(ffmpeg))
|
|
{
|
|
args.Logger.ELog("FFMpeg tool not found.");
|
|
return "";
|
|
}
|
|
var fileInfo = new FileInfo(ffmpeg);
|
|
if (fileInfo.Exists == false)
|
|
{
|
|
args.Logger.ELog("FFMpeg tool configured by ffmpeg.exe file does not exist.");
|
|
return "";
|
|
}
|
|
return fileInfo.FullName;
|
|
}
|
|
protected string GetFFMpegPath(NodeParameters args)
|
|
{
|
|
string ffmpeg = args.GetToolPath("FFMpeg");
|
|
if (string.IsNullOrEmpty(ffmpeg))
|
|
{
|
|
args.Logger.ELog("FFMpeg tool not found.");
|
|
return "";
|
|
}
|
|
var fileInfo = new FileInfo(ffmpeg);
|
|
if (fileInfo.Exists == false)
|
|
{
|
|
args.Logger.ELog("FFMpeg tool configured by ffmpeg.exe file does not exist.");
|
|
return "";
|
|
}
|
|
return fileInfo.DirectoryName;
|
|
}
|
|
protected string GetFFPlayExe(NodeParameters args)
|
|
{
|
|
string ffmpeg = args.GetToolPath("FFMpeg");
|
|
if (string.IsNullOrEmpty(ffmpeg))
|
|
{
|
|
args.Logger.ELog("FFMpeg tool not found.");
|
|
return "";
|
|
}
|
|
|
|
var fileInfo = new FileInfo(ffmpeg);
|
|
if (fileInfo.Exists == false)
|
|
{
|
|
args.Logger.ELog("FFMpeg tool configured by ffmpeg file does not exist.");
|
|
return "";
|
|
}
|
|
|
|
var ffplay = Path.Combine(fileInfo.DirectoryName, "ffplay" + fileInfo.Extension);
|
|
if (File.Exists(ffplay) == false)
|
|
{
|
|
args.Logger.ELog("FFMpeg tool configured by ffplay file does not exist.");
|
|
return "";
|
|
}
|
|
return ffplay;
|
|
}
|
|
|
|
private const string VIDEO_INFO = "VideoInfo";
|
|
protected void SetVideoInfo(NodeParameters args, VideoInfo info)
|
|
{
|
|
if (args.Parameters.ContainsKey(VIDEO_INFO))
|
|
args.Parameters[VIDEO_INFO] = info;
|
|
else
|
|
args.Parameters.Add(VIDEO_INFO, info);
|
|
}
|
|
protected VideoInfo GetVideoInfo(NodeParameters args)
|
|
{
|
|
if (args.Parameters.ContainsKey(VIDEO_INFO) == false)
|
|
{
|
|
args.Logger.WLog("No codec information loaded, use a 'VideoFile' node first");
|
|
return null;
|
|
}
|
|
var result = args.Parameters[VIDEO_INFO] as VideoInfo;
|
|
if (result == null)
|
|
{
|
|
args.Logger.WLog("VideoInfo not found for file");
|
|
return null;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
} |