{
  "5": {
    "1": "5.1"
  },
  "7": {
    "1": "7.1"
  },
  "Enums": {
    "WatermarkPosition": {
      "BottomLeft": "Bottom Left",
      "BottomRight": "Bottom Right",
      "Center": "Center",
      "TopLeft": "Top Left",
      "TopRight": "Top Right"
    }
  },
  "Flow": {
    "Parts": {
      "AudioToVideo": {
        "Description": "Converts an audio file into a video file and generates a video based on the audio",
        "Label": "Audio to Video",
        "Fields": {
          "Codec": "Codec",
          "Color": "Color",
          "Color-Help": "Optional #RRGGBB color code to use for the sound waves, must be in the format #RRGGBB, for example #FF0090",
          "Container": "Container",
          "HardwareEncoding": "Hardware Encode",
          "HardwareEncoding-Help": "When checked, will test to see if hardware encoders are found on the Processing Node, and if found will use hardware encoding, otherwise will fallback to CPU encoding.",
          "Resolution": "Resolution",
          "Visualization": "Visualisation",
          "Visualization-Help": "The visualization to use in the generated video.  See Help for examples"
        }
      },
      "CanUseHardwareEncoding": {
        "Description": "Checks if the specified hardware encoder is currently available to the Flow.",
        "Label": "Can Use Hardware Encoding",
        "Fields": {
          "Encoder": "Encoder",
          "Encoder-Help": "The hardware decoder to check"
        }
      },
      "ComskipRemoveAds": {
        "Description": "Uses a comskip EDL file and will remove commercials using that file.",
        "Label": "Comskip Remove Ads",
        "Fields": {
          "RunComskipIfNoEdl": "Run Comskip",
          "RunComskipIfNoEdl-Help": "Run comskip against the file if no comskip (EDL) file is found."
        },
        "Outputs": {
          "1": "Commercials removed, saved to temporary file",
          "2": "No commercials detected"
        }
      },
      "CreateThumbnail": {
        "Description": "Creates a thumbnail image from a video file.",
        "Label": "Create Thumbnail",
        "Fields": {
          "Height": "Height",
          "Height-Help": "The height of the thumbnail image.",
          "OutputFile": "Output File",
          "OutputFile-Help": "The file path where the thumbnail image will be saved. If left blank, a .jpg file will be created in the same location as the original file.",
          "ResizeMode": "Mode",
          "ResizeMode-Help": "The method used for resizing the image.",
          "SkipBlackFrames": "Skip Black Frames",
          "SkipBlackFrames-Help": "If enabled, the system will skip black frames and select another frame instead.",
          "Time": "Time",
          "Time-Help": "The time in the video from which to capture the thumbnail.",
          "Width": "Width",
          "Width-Help": "The width of the thumbnail image."
        },
        "Outputs": {
          "1": "Thumbnail created.",
          "2": "Failed to create thumbnail."
        }
      },
      "DisableAmd": {
        "Description": "Disables AMD AMF hardware encoder",
        "Label": "Disable AMD",
        "Outputs": {
          "1": "Disabled"
        }
      },
      "DisableIntelQsv": {
        "Description": "Disables Intel QSV hardware encoder",
        "Label": "Disable Intel QSV",
        "Outputs": {
          "1": "Disabled"
        }
      },
      "DisableNvidia": {
        "Description": "Disables NVIDIA hardware encoder",
        "Label": "Disable NVIDIA",
        "Outputs": {
          "1": "Disabled"
        }
      },
      "DisableVaapi": {
        "Description": "Disables VAAPI hardware encoder",
        "Label": "Disable VAAPI",
        "Outputs": {
          "1": "Disabled"
        }
      },
      "FfmpegBuilderAddInputFile": {
        "Label": "FFMPEG Builder: Add Input File",
        "Fields": {
          "Pattern": "Pattern",
          "Pattern-Help": "A regular expression used to search for input files",
          "UseSourceDirectory": "Use Source Directory",
          "UseSourceDirectory-Help": "If checked the original source directory will be searched, otherwise the working directory will be used."
        },
        "Outputs": {
          "1": "File found and added",
          "2": "No file found"
        }
      },
      "FfmpegBuilderAspectRatio": {
        "Label": "FFMPEG Builder: Aspect Ratio",
        "Fields": {
          "AdjustmentMode": "Adjustment Mode",
          "AdjustmentMode-Help": "Choose how the aspect ratio should be enforced. Options include stretching the video, adding black bars (letterbox), or cropping the video to fit the aspect ratio.",
          "AspectRatio": "Aspect Ratio",
          "AspectRatio-Help": "Select the desired aspect ratio for the video. Available options include standard aspect ratios (16:9, 4:3, 21:9) or a custom ratio.",
          "CustomHeight": "Custom Height",
          "CustomHeight-Help": "Specify the height to use when selecting the custom aspect ratio option.",
          "CustomWidth": "Custom Width",
          "CustomWidth-Help": "Specify the width to use when selecting the custom aspect ratio option."
        },
        "Outputs": {
          "1": "Aspect ratio was changed successfully",
          "2": "Video was already in the desired aspect ratio"
        }
      },
      "FfmpegBuilderAudioAddTrack": {
        "Description": "Adds a new audio track to FFMPEG Builder which will be added once the builder is executed.",
        "Label": "FFMPEG Builder: Audio Add Track",
        "Fields": {
          "Bitrate": "Bitrate",
          "Bitrate-Help": "Bitrate of the new audio track",
          "BitratePerChannel": "Bitrate Per Channel",
          "BitratePerChannel-Help": "If the bitrate specified should be per channel",
          "Channels": "Channels",
          "Channels-Help": "The number of channels this new audio track will be.\nIf you specify more channels than the source, FFMPEG will automatically upmix it.\nIf you specify fewer channels than the source, FFMPEG will automatically down mix it.",
          "Codec": "Codec",
          "Codec-Help": "The codec to use to encode the audio",
          "CustomTrackSelection": "Source Track Selection",
          "Filter": "Filter",
          "Filter-Help": "Specifies a custom filter to apply to this new audio track.",
          "Index": "Index",
          "Index-Help": "The index where to insert the new audio track.  0 based, so to insert the new audio track as the first track set this to 0.",
          "Language": "Language",
          "Language-Help": "Optional [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code to use.  Will attempt to find an audio track with this language code if not the best audio track will be used.",
          "NewTitle": "New Title",
          "NewTitle-Help": "Optional title for the newly created audio track.  If left blank the source title will be used",
          "RemoveTitle": "Remove Title",
          "RemoveTitle-Help": "If the source title should be removed and the track should have no title",
          "SampleRate": "Sample Rate",
          "SampleRate-Help": "The sample rate to use for the new audio track",
          "TrackSelectionOptions": "Track Selection",
          "TrackSelectionOptionsKey": "Property",
          "TrackSelectionOptionsValue": "Value"
        },
        "Outputs": {
          "1": "Added audio track to FFMPEG Builder",
          "2": "No suitable source audio track found to create new audio track from"
        }
      },
      "FfmpegBuilderAudioAdjustVolume": {
        "Description": "Adjusts audio tracks volume in a video file using FFMPEG",
        "Label": "FFMPEG Builder: Audio Adjust Volume",
        "Fields": {
          "AllAudio": "All Audio Tracks",
          "AllAudio-Help": "If all audio tracks should be normalized or if just the first track should be",
          "NotMatching": "Not Matching",
          "NotMatching-Help": "If audio tracks NOT matching the pattern should be removed",
          "Pattern": "Pattern",
          "Pattern-Help": "A regular expression to match against, eg \"commentary\" to remove commentary tracks",
          "UseLanguageCode": "Use Language Code",
          "UseLanguageCode-Help": "If the language code of the audio track should be used instead of the title",
          "VolumePercent": "Volume Percent",
          "VolumePercent-Help": "The percent of the adjusted volume.\n100 means no adjustment\n50 means half volume\n0 means muted"
        },
        "Outputs": {
          "1": "Audio tracks volume filter added to FFMPEG Builder",
          "2": "Audio tracks were not adjusted"
        }
      },
      "FfmpegBuilderAudioConvert": {
        "Description": "Allows you to convert all tracks matching the parameters to be converted.",
        "Label": "FFMPEG Builder: Audio Convert",
        "Fields": {
          "Bitrate": "Bitrate",
          "Bitrate-Help": "Bitrate of the audio track",
          "BitratePerChannel": "Bitrate Per Channel",
          "BitratePerChannel-Help": "If the bitrate specified should be per channel",
          "Channels": "Channels",
          "Channels-Help": "The number of channels this new audio track will be.\nIf you specify more channels than the source, FFMPEG will automatically upmix it.\nIf you specify fewer channels than the source, FFMPEG will automatically down mix it.",
          "Codec": "Codec",
          "Codec-Help": "The codec to use to encode the audio",
          "CustomTrackSelection": "Convert",
          "PcmFormat": "Format",
          "PcmFormat-Help": "The PCM format to use for encoding PCM audio.",
          "TrackSelectionOptions": "Matching",
          "TrackSelectionOptionsKey": "Property",
          "TrackSelectionOptionsValue": "Value"
        },
        "Outputs": {
          "1": "Tracks to be converted",
          "2": "No tracks to be converted"
        }
      },
      "FfmpegBuilderAudioConverter": {
        "Description": "Allows you to convert all tracks matching the parameters to be converted.",
        "Label": "FFMPEG Builder: Audio Converter",
        "Fields": {
          "Bitrate": "Bitrate",
          "Bitrate-Help": "Bitrate of the audio track",
          "BitratePerChannel": "Bitrate Per Channel",
          "BitratePerChannel-Help": "If the bitrate specified should be per channel",
          "Channels": "Channels",
          "Channels-Help": "The number of channels this new audio track will be.\nIf you specify more channels than the source, FFMPEG will automatically upmix it.\nIf you specify fewer channels than the source, FFMPEG will automatically down mix it.",
          "Codec": "Codec",
          "Codec-Help": "The codec to use to encode the audio",
          "Field": "Field",
          "Field-Help": "The field to match the pattern against.  Leave the pattern empty to match anything with no value set.",
          "NotMatching": "Not Matching",
          "NotMatching-Help": "If audio tracks NOT matching the pattern should be converted",
          "Pattern": "Pattern",
          "Pattern-Help": "A string or regular expression to match against, eg \"commentary\" to match commentary exactly or \".*commentary.*\" to match commentary anywhere in the string",
          "PcmFormat": "Format",
          "PcmFormat-Help": "The PCM format to use for encoding PCM audio."
        },
        "Outputs": {
          "1": "Tracks to be converted",
          "2": "No tracks to be converted"
        }
      },
      "FfmpegBuilderAudioNormalization": {
        "Description": "Normalizes all audio tracks in a video file using FFMPEGs loudnorm filter",
        "Label": "FFMPEG Builder: Audio Normalization",
        "Fields": {
          "AllAudio": "All Audio Tracks",
          "AllAudio-Help": "If all audio tracks should be normalized or if just the first track should be",
          "NotMatching": "Not Matching",
          "NotMatching-Help": "If audio tracks NOT matching the pattern should be removed",
          "Pattern": "Pattern",
          "Pattern-Help": "A regular expression to match against, eg \"commentary\" to remove commentary tracks",
          "TwoPass": "Two Pass",
          "TwoPass-Help": "If the audio tracks should use two pass normalization.  This improves the normalization but increases the processing time.",
          "UseLanguageCode": "Use Language Code",
          "UseLanguageCode-Help": "If the language code of the audio track should be used instead of the title"
        },
        "Outputs": {
          "1": "Audio tracks were normalized and added to FFMPEG Builder",
          "2": "No audio tracks were found to be normalized"
        }
      },
      "FfmpegBuilderAudioSetLanguage": {
        "Description": "Allows you to set the language for any tracks that have no language set.  If the track does have a language set, it will be skipped.\n\nOutput 1: Tracks were updated\nOutput 2: No tracks were needing to be updated",
        "Label": "FFMPEG Builder: Set Language",
        "Fields": {
          "Language": "Language",
          "Language-Help": "The [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code to use.",
          "StreamType": "Type",
          "StreamType-Help": "The type of track to set the language for"
        },
        "Outputs": {
          "1": "Tracks updated in FFMPEG Builder",
          "2": "Tracks NOT updated"
        }
      },
      "FfmpegBuilderAudioTrackRemover": {
        "Description": "Allows you to remove tracks based on either their title or their language codes.\n\nAny title (or language code if set to \"Use Language Code\") that is blank will NOT be removed regardless of the pattern.",
        "Label": "FFMPEG Builder: Track Remover (Obsolete)",
        "Fields": {
          "MatchType": "Matches",
          "MatchType-Help": "The value to match against.",
          "NotMatching": "Not Matching",
          "NotMatching-Help": "If audio tracks NOT matching the pattern should be removed",
          "Pattern": "Pattern",
          "Pattern-Help": "A regular expression to match against, eg \"commentary\" to remove commentary tracks",
          "RemoveAll": "Remove All",
          "RemoveAll-Help": "Remove all current tracks from the output file.  You can use Add Track afterwards to add tracks of specific codecs",
          "RemoveIndex": "Remove Index",
          "RemoveIndex-Help": "The start index where to remove the tracks from.  This allows you to remove all, or all matching, tracks after the starting index.\nSet to zero to remove all matching the parameters.\nSet to 1 to keep the first track and remove any after the first matching the parameters",
          "StreamType": "Type",
          "StreamType-Help": "The type of tracks to reorder in the FFMPEG Builder",
          "UseLanguageCode": "Use Language Code",
          "UseLanguageCode-Help": "If the language code of the track should be used instead of the title"
        },
        "Outputs": {
          "1": "Tracks set to remove",
          "2": "Tracks NOT set to removed"
        }
      },
      "FfmpegBuilderAudioTrackReorder": {
        "Description": "Allows you to reorder tracks in the preferred order.\n\nEnter the languages/audio codecs/channels in the order you want.  Any not listed will be ordered after the ones entered in their original order.\nIf there are multiple tracks with same language/codec/channels, they will be ordered first by the order you entered, then in their original order.\n\nNote the first track after reordering will be set as the default track..\n\nOutput 1: Tracks were reordered\nOutput 2: Tracks did not need reordering",
        "Label": "FFMPEG Builder: Track Reorder",
        "Fields": {
          "Channels": "Channels",
          "Channels-Help": "The order of audio channels to sort the audio tracks by.  This sorting is done before languages.\nFor example \"5.1\",\"7.1\",\"6.2\",\"2\"",
          "Languages": "Languages",
          "Languages-Help": "The order of languages to sort the tracks by.  This sorting is done before the codec.",
          "OrderedTracks": "Ordered Codecs",
          "OrderedTracks-Help": "The order of codecs to the tracks by.  This is done after the languages (if any)",
          "StreamType": "Type",
          "StreamType-Help": "The type of tracks to reorder in the FFMPEG Builder"
        },
        "Outputs": {
          "1": "Tracks re-ordered in FFMPEG Builder",
          "2": "Tracks NOT re-ordered"
        }
      },
      "FfmpegBuilderAutoChapters": {
        "Description": "Automatically detect scene changes in the video to generate chapters.",
        "Label": "FFMPEG Builder: Auto Chapters",
        "Fields": {
          "MinimumLength": "Minimum Length",
          "MinimumLength-Help": "The minimum length of a chapter in seconds",
          "MinimumLength-Suffix": "seconds",
          "Percent": "Percent",
          "Percent-Help": "The threshold percentage value to use for scene detection changes.  A good value is 45%",
          "Percent-Suffix": "%"
        },
        "Outputs": {
          "1": "Chapters generated and added to FFMPEG Builder",
          "2": "No chapters detected or video already had chapters"
        }
      },
      "FfmpegBuilderComskipChapters": {
        "Description": "Uses a comskip EDL file and will create chapters given that EDL comskip file.",
        "Label": "FFMPEG Builder: Comskip Chapters",
        "Fields": {
          "RunComskipIfNoEdl": "Run Comskip",
          "RunComskipIfNoEdl-Help": "Run comskip against the file if no comskip (EDL) file is found."
        },
        "Outputs": {
          "1": "Commercials chapters created, added to FFMPEG Builder",
          "2": "No commercials detected"
        }
      },
      "FfmpegBuilderCropBlackBars": {
        "Description": "Updated FFMPEG Builder to crop black bars if detected",
        "Label": "FFMPEG Builder: Crop Black Bars",
        "Fields": {
          "CroppingThreshold": "Threshold",
          "CroppingThreshold-Help": "The amount of pixels that must be greater than to crop.   E.g. if there's only 5 pixels detected as black space, you may consider this too small to crop."
        },
        "Outputs": {
          "1": "FFMPEG Builder updated to crop black bars",
          "2": "No black bars detected, not cropping"
        }
      },
      "FfmpegBuilderCustomParameters": {
        "Description": "Lets you add custom parameters to the FFMPEG Builder for execution",
        "Label": "FFMPEG Builder: Custom Parameters",
        "Fields": {
          "ForceEncode": "Force Encode",
          "ForceEncode-Help": "If this should force the FFMPEG Builder Executor to always execute even if no changes are detected that would usually require the executor to run.",
          "Parameters": "Parameters",
          "Parameters-Help": "The parameters to add to the FFMPEG Builder for execution"
        },
        "Outputs": {
          "1": "Parameters added"
        }
      },
      "FfmpegBuilderDefaultOriginalLanguage": {
        "Description": "This flow element will attempt to set the original language tracks as default.  It will try to find the first track matching the original language, and then set that as default.\n\nIf no tracks are found with the original language, then no changes are made.",
        "Label": "FFMPEG Builder: Default Original Language",
        "Fields": {
          "MakeFirst": "Make First",
          "MakeFirst-Help": "If the original language track should also become the first track.",
          "StreamType": "Type",
          "StreamType-Help": "The type of tracks that should be updated"
        },
        "Outputs": {
          "1": "Tracks have been modified",
          "2": "No tracks have been changed"
        }
      },
      "FfmpegBuilderDeinterlace": {
        "Label": "FFMPEG Builder: Deinterlace",
        "Fields": {
          "Mode": "Mode",
          "Mode-Help": "The deinterlacing method to use.  See help for more information."
        },
        "Outputs": {
          "1": "Added deinterlace filter to video stream"
        }
      },
      "FFmpegBuilderDurationStart": {
        "Descriptions": "This flow element enables users to define the starting point and duration for extracting a segment from a video.",
        "Label": "FFMPEG Builder: Duration/Start",
        "Fields": {
          "Duration": "Duration",
          "Duration-Help": "The duration of the video file, if 0, will not adjust the duration.",
          "Start": "Start",
          "Start-Help": "The start of the video file, if 0, will not adjust the start."
        },
        "Outputs": {
          "1": "Duration/Start configured",
          "2": "Failed to set duration/start"
        }
      },
      "FfmpegBuilderExecutor": {
        "Description": "Executes a FFMPEG Builder command created by other FFMPEG Builder flow elements.",
        "Label": "FFMPEG Builder: Executor",
        "Fields": {
          "HardwareDecoding": "Hardware Decoding",
          "HardwareDecoding-Help": "If the executor should attempt to use hardware decoding.  If not available the execution will proceed just without hardware decoding enabled.",
          "KeepModel": "Keep Model",
          "KeepModel-Help": "Determines whether to retain the FFmpeg Builder model used to construct the FFmpeg command. When disabled, the model will be removed after the flow element successfully completes (i.e., no failure occurs).",
          "Strictness": "Strictness",
          "Strictness-Help": "Allows you to customize the strictness of FFmpeg.  This should be left on 'Experimental' for most users."
        },
        "Outputs": {
          "1": "FFMPEG Builder ran successfully and created new temporary file",
          "2": "No changes detected in FFMPEG Builder, file not created"
        }
      },
      "FfmpegBuilderHdrToSdr": {
        "Description": "Checks if a video stream is HDR and if it is updates the FFMPEG Builder to convert it to SDR",
        "Label": "FFMPEG Builder: HDR to SDR",
        "Outputs": {
          "1": "HDR stream detected and updated FFMPEG Builder to convert",
          "2": "No HDR stream found"
        }
      },
      "FfmpegBuilderKeepOriginalLanguage": {
        "Description": "This flow element that will keep only the original language and any additional languages the user defines.\n\nAll other language streams will be removed/marked for deletion.",
        "Label": "FFMPEG Builder: Keep Original Language",
        "Fields": {
          "AdditionalLanguages": "Additional Languages",
          "AdditionalLanguages-Help": "An optional list of additional language codes to keep.\n\nIt is recommended that an [ISO 639-2 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) are used.",
          "FirstIfNone": "First If None",
          "FirstIfNone-Help": "When enabled, this ensures at least one track is kept.  If no tracks matching the original language and no tracks matching the additional languages are found, the first track will be kept regardless.\n\nThis avoids any issues of no audio left on the video.",
          "KeepOnlyFirst": "Keep Only First",
          "KeepOnlyFirst-Help": "When enabled only the first track of each language would be kept.\n\nFor example if there were 2 English tracks, 3 Spanish tracks and 1 German track.  The original language was Spanish, additional languages was set to `eng`, then the result would be 1 English track and 1 Spanish track, the rest would be removed.",
          "StreamType": "Type",
          "StreamType-Help": "The type of tracks that should be updated",
          "TreatEmptyAsOriginal": "Treat Empty As Original",
          "TreatEmptyAsOriginal-Help": "When enabled, any track that has no language set, will be treated as if it were the original language.\n\nFor example, original language is Maori, and a track has no language set on it, it will be treated as Maori."
        },
        "Outputs": {
          "1": "Tracks have been modified",
          "2": "No tracks have been changed"
        }
      },
      "FFmpegBuilderLanguageRemover": {
        "Description": "A basic flow element that removes unwanted audio and/or subtitles from a video file based on the specified languages.",
        "Label": "FFMPEG Builder: Language Remover",
        "Fields": {
          "Languages": "Languages",
          "Languages-Help": "A list of languages to either remove or keep, depending on the Not Matching option.",
          "NotMatching": "Not Matching",
          "NotMatching-Help": "Indicates whether to remove audio tracks that do NOT match the specified languages.",
          "StreamType": "Track Type",
          "StreamType-Help": "Specifies the type of tracks (audio or subtitles) to remove in the FFMPEG Builder."
        },
        "Outputs": {
          "1": "Tracks marked for removal",
          "2": "Tracks NOT marked for removal"
        }
      },
      "FfmpegBuilderMetadataRemover": {
        "Description": "Removes metadata from the FFMPEG Builder so when the file is processed the selected metadata will be removed.\n\nNote: Only the metadata when this flow element is effected, if metadata is added after this node runs, that will not be effected.",
        "Label": "FFMPEG Builder: Metadata Remover",
        "Fields": {
          "Audio": "Audio",
          "Audio-Help": "If audio tracks should have this metadata removed",
          "RemoveAdditionalMetadata": "Remove Additional Metadata",
          "RemoveAdditionalMetadata-Help": "If additional metadata should be removed.  Additional metadata is non-standard metadata that may have been added to a video file, eg by iTunes.",
          "RemoveImages": "Remove Images",
          "RemoveImages-Help": "If any images found in the metadata should be removed",
          "RemoveLanguage": "Remove Language",
          "RemoveLanguage-Help": "If the language should be removed from the tracks",
          "RemoveTitle": "Remove Title",
          "RemoveTitle-Help": "If the title should be removed from the tracks",
          "Subtitle": "Subtitle",
          "Subtitle-Help": "If subtitle tracks should have this metadata removed",
          "Video": "Video",
          "Video-Help": "If video tracks should have this metadata removed"
        },
        "Outputs": {
          "1": "Metadata removed from FFMPEG Builder"
        }
      },
      "FfmpegBuilderPreExecute": {
        "Description": "This element lets you run custom code just prior to the [FFmpeg Builder: Executor](https://fileflows.com/docs/plugins/video-nodes/ffmpeg-builder) executes FFmpeg.\n\nThis allows you to alter the arguments passed into FFmpeg.",
        "Label": "FFMPEG Builder: Pre-Execute",
        "Fields": {
          "Code": "Code"
        },
        "Outputs": {
          "1": "Pre-Execute set"
        }
      },
      "FfmpegBuilderProres": {
        "Description": "Encodes the video to the prores format.",
        "Label": "FFMPEG Builder: Prores",
        "Fields": {
          "Encoder": "Encoder",
          "Encoder-Help": "Which FFmpeg prores encoder to use.",
          "PixelFormat": "Pixel Format",
          "Profile": "Profile",
          "Quality": "Quality",
          "Quality-Help": "0 for maximum quality, 32 for minimum quality.  9 to 13 are good values to use."
        },
        "Outputs": {
          "1": "Video set to use prores"
        }
      },
      "FfmpegBuilderRemoveAttachments": {
        "Description": "Removes any attachments from the video, if there are any.",
        "Label": "FFMPEG Builder: Remove Attachments",
        "Outputs": {
          "1": "FFMPEG Builder set to remove attachments."
        }
      },
      "FfmpegBuilderRemuxToMkv": {
        "Description": "Remuxes a video file into a MKV container.",
        "Label": "FFMPEG Builder: Remux to MKV",
        "Outputs": {
          "1": "FFMPEG Builder set to remux to MKV"
        }
      },
      "FfmpegBuilderRemuxToMov": {
        "Description": "Remuxes a video file into a MOV container.",
        "Label": "FFMPEG Builder: Remux to MOV",
        "Outputs": {
          "1": "FFMPEG Builder set to remux to MOV"
        }
      },
      "FfmpegBuilderRemuxToMP4": {
        "Description": "Remuxes a video file into a MP4 container.",
        "Label": "FFMPEG Builder: Remux to MP4",
        "Fields": {
          "UseHvc1": "Use HVC1",
          "UseHvc1-Help": "If HVC1 should be used instead of the default of HEV1"
        },
        "Outputs": {
          "1": "FFMPEG Builder set to remux to MP4"
        }
      },
      "FfmpegBuilderRemuxToMxf": {
        "Description": "Remuxes a video file into a MXF container.",
        "Label": "FFMPEG Builder: Remux to MXF",
        "Outputs": {
          "1": "FFMPEG Builder set to remux to MXF"
        }
      },
      "FfmpegBuilderRemuxToWebm": {
        "Description": "Remuxes a video file into a WEBM container.",
        "Label": "FFMPEG Builder: Remux to WEBM",
        "Outputs": {
          "1": "FFMPEG Builder set to remux to WEBM"
        }
      },
      "FfmpegBuilderScaler": {
        "Description": "This allows you to scale a video to the specified dimensions.  It will retain the aspect ratio of the video so if the video was 1920x1000 it would scale to 1280x668 if you select 720P.",
        "Label": "FFMPEG Builder: Video Scaler",
        "Fields": {
          "Force": "Force",
          "Force-Help": "When checked the video will be force scaled even if the working file is already in this resolution (or near this resolution).",
          "OnlyIfLarger": "Only If Larger",
          "OnlyIfLarger-Help": "The video will only be scaled to this resolution if the video is currently larger than this resolution",
          "Resolution": "Resolution"
        },
        "Outputs": {
          "1": "FFMPEG Builder scale filter added",
          "2": "Video was already in/near the scaled resolution"
        }
      },
      "FfmpegBuilderSetDefaultTrack": {
        "Description": "Set a track as default in the FFmpeg builder.",
        "Label": "FFMPEG Builder: Set Default Track",
        "Fields": {
          "Index": "Index",
          "Index-Help": "The index of the track to set as default, only used if language is not specified.",
          "Language": "Language",
          "Language-Help": "Optional [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code to use.",
          "StreamType": "Type",
          "StreamType-Help": "The type of track to set as default in the FFMPEG Builder"
        },
        "Outputs": {
          "1": "Track set as default",
          "2": "Failed to set track as default"
        }
      },
      "FfmpegBuilderSetDevice": {
        "Description": "Sets the device to use for hardware encoding/decoder if the encoder/decoder supports it.",
        "Label": "FFMPEG Builder: Set Device",
        "Fields": {
          "Device": "Device",
          "Device-Help": "The path to the device, or leave blank if no device should be specified."
        },
        "Outputs": {
          "1": "Device set"
        }
      },
      "FfmpegBuilderSetFps": {
        "Description": "Set the frames per second (FPS) in the FFmpeg Builder",
        "Label": "FFMPEG Builder: Set FPS",
        "Fields": {
          "Fps": "FPS",
          "Fps-Help": "The desired FPS, if the input FPS and the desired FPS do not match then FFMPEG will convert it, e.g (23.976, 24, 30, 60).",
          "OnlyIfHigher": "Only If Higher",
          "OnlyIfHigher-Help": "If the FPS should be adjusted only if the current FPS is more than the current."
        },
        "Outputs": {
          "1": "FPS updated",
          "2": "No changes were necessary"
        }
      },
      "FfmpegBuilderSetTrackTitles": {
        "Description": "Set track titles based on a formatter in the FFmpeg builder.",
        "Label": "FFMPEG Builder: Set Track Titles",
        "Fields": {
          "CommentaryFormat": "Commentary",
          "CommentaryFormat-Help": "How commentary tracks should be treated, you can use the same formatter as other tracks or use a different method.",
          "Format": "Format",
          "Format-Help": "The formatter to use, see _Help_ for more information.",
          "Separator": "Separator",
          "Separator-Help": "The string separator used between format values, this is need to ensure no empty values are kept.",
          "StreamType": "Type",
          "StreamType-Help": "The type of track to set as default in the FFMPEG Builder"
        },
        "Outputs": {
          "1": "Track titles updated",
          "2": "No track titles were effected"
        }
      },
      "FfmpegBuilderStart": {
        "Description": "Creates an instance of the FFMPEG Builder which can build a FFMPEG argument to then execute with the FFMPEG Executor.",
        "Label": "FFMPEG Builder: Start",
        "Outputs": {
          "1": "FFMPEG Builder created and ready to add FFMPEG Builder flow elements to"
        }
      },
      "FfmpegBuilderSubtitleClearDefault": {
        "Description": "This flow element will clear the default flag from subtitles.",
        "Label": "FFMPEG Builder: Subtitle Clear Default",
        "Fields": {
          "LeaveForced": "Leave Forced",
          "LeaveForced-Help": "When checked all forced subtitles will not be touched, they will maintain their original setting.  This is executed prior to 'Set Forced Default' so takes precedent.",
          "SetForcedDefault": "Set Forced Default",
          "SetForcedDefault-Help": "When checked the first subtitle that is found with the Forced field set, will be set as default, all others will have their default flag cleared."
        },
        "Outputs": {
          "1": "Subtitles default flags have been changed",
          "2": "Subtitles had no changes made"
        }
      },
      "FfmpegBuilderSubtitleFormatRemover": {
        "Description": "Removes subtitles from a video file if found.",
        "Label": "FFMPEG Builder: Subtitle Format Remover",
        "Fields": {
          "RemoveAll": "Remove All",
          "RemoveAll-Help": "When checked, all subtitles will be removed from the file, otherwise only those selected below will be",
          "SubtitlesToRemove": "Subtitles To Remove"
        },
        "Outputs": {
          "1": "Subtitles marked for removal in FFMPEG Builder",
          "2": "No subtitles to remove"
        }
      },
      "FfmpegBuilderSubtitleTrackMerge": {
        "Label": "FFMPEG Builder: Subtitle Track Merge",
        "Fields": {
          "Default": "Default",
          "Default-Help": "If the subtitle should be the default subtitle",
          "DeleteAfterwards": "Delete After Merging",
          "DeleteAfterwards-Help": "If the subtitle file should be deleted after being merged",
          "Forced": "Forced",
          "Forced-Help": "If the subtitle should be forced",
          "Language": "Language",
          "Language-Help": "Optional [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code for the added subtitle.",
          "MatchFilename": "Match Filename",
          "MatchFilename-Help": "When checked only subtitles with the same filename as the input file or the working file will be merged",
          "Pattern": "Pattern",
          "Pattern-Help": "Optional regular expression to match files against.",
          "Subtitles": "Subtitles",
          "Subtitles-Help": "Select which subtitles to search for to add",
          "Title": "Title",
          "Title-Help": "The title of the subtitle, if not set the language will be used as the title if found.",
          "UseSourceDirectory": "Use Source Directory",
          "UseSourceDirectory-Help": "If checked the original source directory will be searched, otherwise the working directory will be used."
        },
        "Outputs": {
          "1": "Subtitles found and added",
          "2": "No subtitles found"
        }
      },
      "FfmpegBuilderSubtitleTrackRemover": {
        "Description": "Allows you to remove subtitles based on either their title or their language codes.\n\nAny language (or title if set to \"Use Title\") that is blank will NOT be removed regardless of the pattern.",
        "Label": "FFMPEG Builder: Subtitle Track Remover",
        "Fields": {
          "NotMatching": "Not Matching",
          "NotMatching-Help": "If subtitles NOT matching the pattern should be removed",
          "Pattern": "Pattern",
          "Pattern-Help": "A regular expression to match against, eg \"eng\" to remove English tracks",
          "UseLanguageCode": "Use Language Code",
          "UseLanguageCode-Help": "If the language code of the audio track should be used instead of the title"
        },
        "Outputs": {
          "1": "Subtitles marked for removal in FFMPEG Builder",
          "2": "No subtitles to remove"
        }
      },
      "FfmpegBuilderTrackRemover": {
        "Description": "Allows you to remove tracks based on specified conditions.",
        "Label": "FFMPEG Builder: Track Remover",
        "Fields": {
          "CustomTrackSelection": "Remove",
          "StreamType": "Type",
          "StreamType-Help": "The type of tracks to reorder in the FFMPEG Builder",
          "TrackSelectionOptions": "",
          "TrackSelectionOptionsKey": "Property",
          "TrackSelectionOptionsValue": "Value"
        },
        "Outputs": {
          "1": "Tracks set to remove",
          "2": "Tracks NOT set to removed"
        }
      },
      "FfmpegBuilderTrackSorter": {
        "Description": "This flow element sorts tracks based on sorting options set by the user.",
        "Label": "FFMPEG Builder: Track Sorter",
        "Fields": {
          "SetFirstDefault": "Set Default",
          "SetFirstDefault-Help": "If the first track should be set as default after the sort.",
          "Sorters": "Sorters",
          "Sorters-Help": "Add one or more sorting options to sort the tracks by.",
          "SortersKey": "Field",
          "SortersValue": "Value",
          "StreamType": "Type",
          "StreamType-Help": "The type of tracks that should be updated"
        },
        "Outputs": {
          "1": "Tracks have been modified",
          "2": "No tracks have been changed"
        }
      },
      "FfmpegBuilderVideo10Bit": {
        "Description": "Sets FFMPEG Builder to encode the video streams in 10 Bit",
        "Label": "FFMPEG Builder: Video 10 Bit",
        "Outputs": {
          "1": "FFMPEG Builder video streams set to encode in 10 Bit"
        }
      },
      "FfmpegBuilderVideoBitrate": {
        "Description": "Sets FFMPEG Builder to encode the video given the bitrate",
        "Label": "FFMPEG Builder: Video Bitrate",
        "Fields": {
          "Bitrate": "Bitrate",
          "Bitrate-Help": "The target bitrate of the video in kilobytes",
          "Bitrate-Suffix": "KB / %",
          "Percent": "Percent",
          "Percent-Help": "When selected the bitrate will be calculated as a percentage of the current bitrate."
        },
        "Outputs": {
          "1": "FFMPEG Builder video streams updated"
        }
      },
      "FfmpegBuilderVideoBitrateEncode": {
        "Description": "Sets the FFMPEG Builder to encode the video with simple to use presets based on Bitrate",
        "Label": "FFMPEG Builder: Bitrate Encode",
        "Fields": {
          "Bitrate": "Bitrate",
          "Bitrate-Suffix": "Kbps",
          "Codec": "Codec",
          "Encoder": "Encoder",
          "Encoder-Help": "The encoder to force to use.  If you specify a hardware encoder that is unavailable, the encode will fail.",
          "HardwareEncoding": "Hardware Encode",
          "HardwareEncoding-Help": "When checked, will test to see if hardware encoders are found on the Processing Node, and if found will use hardware encoding, otherwise will fallback to CPU encoding."
        },
        "Outputs": {
          "1": "FFMPEG Builder video streams set to encode"
        }
      },
      "FfmpegBuilderVideoCodec": {
        "Description": "Sets FFMPEG Builder to encode the video streams in the specified codec",
        "Label": "FFMPEG Builder: Video Codec",
        "Fields": {
          "DisableOtherVideoStreams": "Only First",
          "DisableOtherVideoStreams-Help": "When checked if there are multiple video streams in the file, this will remove all but the first video stream from the file once executed.",
          "Force": "Force Encode",
          "Force-Help": "Will force a encode of the video even if it is already in the target Video Codec",
          "VideoCodec": "Video Codec",
          "VideoCodec-Help": "The video codec the video should be in, for example hevc, h264.\nIf left empty all original video tracks will be copied.",
          "VideoCodecParameters": "Video Codec Parameters",
          "VideoCodecParameters-Help": "The parameters to use to encode the video, eg. \"hevc_nvenc -preset hq -crf 23\" to encode into hevc using the HQ preset a constant rate factor of 23 and using NVIDIA hardware acceleration."
        },
        "Outputs": {
          "1": "FFMPEG Builder video streams set to encode",
          "2": "Video already in target codec, will not re-encode"
        }
      },
      "FfmpegBuilderVideoEncode": {
        "Description": "Sets the FFMPEG Builder to encode the video with simple to use presets",
        "Label": "FFMPEG Builder: Video Encode",
        "Fields": {
          "Codec": "Codec",
          "Encoder": "Encoder",
          "Encoder-Help": "The encoder to force to use.  If you specify a hardware encoder that is unavailable, the encode will fail.",
          "HardwareEncoding": "Hardware Encode",
          "HardwareEncoding-Help": "When checked, will test to see if hardware encoders are found on the Processing Node, and if found will use hardware encoding, otherwise will fallback to CPU encoding.",
          "Quality": "Quality",
          "Quality-Help": "A logarithmic quality scale, so small changes in the this slider cause large changes in file size/quality.\nThe lower the number the higher the quality.\nSee Help for more information",
          "Quality-Suffix": "(Higher Quality, larger file)",
          "Speed": "Speed"
        },
        "Outputs": {
          "1": "FFMPEG Builder video streams set to encode"
        }
      },
      "FfmpegBuilderVideoMaxBitrate": {
        "Description": "Sets FFMPEG Builder limit the bitrate of video",
        "Label": "FFMPEG Builder: Video Max Bitrate",
        "Fields": {
          "Bitrate": "Maximum Bitrate",
          "Bitrate-Help": "The maximum bitrate of the video in kilobytes",
          "Bitrate-Suffix": "KB"
        },
        "Outputs": {
          "1": "FFMPEG Builder video streams updated"
        }
      },
      "FfmpegBuilderVideoTag": {
        "Description": "Sets a video tag on the file",
        "Label": "FFMPEG Builder: Video Tag",
        "Fields": {
          "Tag": "Tag",
          "Tag-Help": "The tag to add to the video file"
        },
        "Outputs": {
          "1": "FFMPEG Builder tag added"
        }
      },
      "FFmpegBuilderWatermark": {
        "Description": "Adds a watermark to a video file.",
        "Label": "FFMPEG Builder: Watermark",
        "Fields": {
          "Height": "Height",
          "Height-Help": "Set a custom height of the image, or set to 0 for source height or scaled if width is set.",
          "Image": "Image",
          "Image-Help": "The image file to the watermark, for best results use a PNG file.",
          "Opacity": "Opacity",
          "Opacity-Help": "Adjusts the transparency level of the overlay image, ranging from 0 (fully transparent) to 100 (fully opaque).",
          "Position": "Position",
          "Position-Help": "Where to place the watermark",
          "Width": "Width",
          "Width-Help": "Set a custom width of the image, or set to 0 for source width or scaled if height is set.",
          "XPos": "X-Pos",
          "XPos-Help": "The position of the watermark on the x-axis",
          "YPos": "Y-Pos",
          "YPos-Help": "The position of the watermark on the y-axis"
        },
        "Outputs": {
          "1": "Watermark added"
        }
      },
      "ReadVideoInfo": {
        "Description": "Reads the video information from the current working file and updates the vi variables.",
        "Label": "Read Video Info",
        "Outputs": {
          "1": "File was a video file and information read into flow",
          "2": "File was not a video file or failed to be read"
        }
      },
      "SubtitleExtractor": {
        "Description": "Extracts a single subtitle track and saves it to the specified destination. Supports extraction of SRT, ASS, and SSA formats.\nThis operation does NOT modify the working file; it will remain unchanged from the input file.\n\nOutput 1: Subtitles extracted successfully.\nOutput 2: No subtitles found to extract.",
        "Label": "Subtitle Extractor",
        "Fields": {
          "ExtractAll": "Extract All",
          "ExtractAll-Help": "Whether to extract all matching subtitles.",
          "ForcedOnly": "Forced Only",
          "ForcedOnly-Help": "Whether to extract only forced subtitles.",
          "Language": "Language",
          "Language-Help": "The [ISO 639-2](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) language code to use.",
          "OnlyTextSubtitles": "Only Text Subtitles",
          "OnlyTextSubtitles-Help": "Whether to extract only text subtitles; all image-based subtitles will be skipped.",
          "OutputFile": "Output File",
          "OutputFile-Help": "Location to save the extracted subtitle. If left blank, a .srt file will be created in the same location as the original file.",
          "SetWorkingFile": "Set as Working File",
          "SetWorkingFile-Help": "If checked, the working file will be updated to this extracted subtitle if one is successfully extracted. The original working file will not be deleted.",
          "Title": "Title",
          "Title-Help": "Optionally enter a title. This can be either a regular expression or a string that must appear in the title to match."
        },
        "Outputs": {
          "1": "Subtitles extracted successfully.",
          "2": "No subtitles extracted."
        }
      },
      "VideoAlreadyProcessed": {
        "Description": "Test if a video file has already been processed by FileFlows",
        "Label": "Video Already Processed",
        "Outputs": {
          "1": "Video has already been processed",
          "2": "Video has not been processed"
        }
      },
      "VideoBitCheck": {
        "Description": "Checks if a video if 8-Bit, 10-Bit, 12-Bit or unknown.",
        "Label": "Video Bit Check",
        "Outputs": {
          "1": "Video is 8-Bit",
          "2": "Video is 10-Bit",
          "3": "Video is 12-Bit",
          "4": "Unknown"
        }
      },
      "VideoBitrateGreaterThan": {
        "Description": "Tests if a videos bitrate is greater than a given bitrate.",
        "Label": "Video Bitrate Greater Than",
        "Fields": {
          "Bitrate": "Bitrate",
          "Bitrate-Suffix": "KBps"
        },
        "Outputs": {
          "1": "Bitrate is greater than",
          "2": "Bitrate is not greater than"
        }
      },
      "VideoDuration": {
        "Description": "Tests whether or not the duration of the video matches the given parameters.",
        "Label": "Video Duration",
        "Fields": {
          "Match": "Match",
          "ValueHigh": " ",
          "ValueLow": "Duration"
        },
        "Outputs": {
          "1": "Video duration matches",
          "2": "Video duration does not match"
        }
      },
      "VideoDurationCompare": {
        "Description": "Compares the original duration of a video with its final duration.",
        "Label": "Video Duration Compare",
        "Fields": {
          "AllowedDifference": "Allowed Difference",
          "AllowedDifference-Help": "The allowed time difference between the original duration of the video and the final duration."
        },
        "Outputs": {
          "1": "Video is within allowed duration difference",
          "2": "Video is not within the allowed duration difference"
        }
      },
      "VideoExtractAudio": {
        "Description": "Extracts audio from a video file and saves it to a file",
        "Label": "Video Extract Audio",
        "Fields": {
          "Channels": "Channels",
          "Channels-Help": "The number of channels the source track must be in to match.  Set to 0 to skip a channels match.",
          "Codec": "Codec",
          "Codec-Help": "A regular expression used to test the stream codec",
          "Language": "Language",
          "Language-Help": "A regular expression used to test the stream language",
          "NotMatching": "Not Matching",
          "NotMatching-Help": "If an audio track NOT matching the pattern should be extracted",
          "OutputBitrate": "Output Bitrate",
          "OutputBitrate-Help": "The bitrate of the extracted audio track",
          "OutputCodec": "Output Codec",
          "OutputCodec-Help": "The codec to save the extract audio in",
          "OutputFile": "Output File",
          "OutputFile-Help": "Where to save the the output file to, e.g. \"'{folder.Orig.FullName}\\{file.Orig.FileName}.mp3'\" to save it with the original file as a mp3 output.\nIf no extension is set, the output codec will be used to determine the extension.",
          "SetWorkingFile": "Set as Working File",
          "SetWorkingFile-Help": "When this is checked, if a subtitle is extracted, the working file will be changed to this extracted subtitle.  The original working file will NOT be deleted.",
          "Title": "Title",
          "Title-Help": "A regular expression used to test the stream title"
        },
        "Outputs": {
          "1": "Audio extracted and saved to a file",
          "2": "Could not find a track to extract"
        }
      },
      "VideoFile": {
        "Description": "An input video file that has had its Video Information read and can be processed",
        "Label": "Video File",
        "Fields": {
          "AnalyzeDuration": "Analyze Duration",
          "AnalyzeDuration-Help": "Specify how many seconds are analyzed to probe the input",
          "AnalyzeDuration-Suffix": "seconds",
          "ProbeSize": "Probe Size",
          "ProbeSize-Help": "The probe size to use in FFMPEG when executing.",
          "ProbeSize-Suffix": "MB"
        },
        "Outputs": {
          "1": "Video file from library"
        }
      },
      "VideoHasErrors": {
        "Description": "Tests if a video file contains any errors",
        "Label": "Video Has Errors",
        "Fields": {
          "HardwareDecoding": "Hardware Decoding",
          "HardwareDecoding-Help": "If the an attempt to use hardware decoding should be made.  If not available the execution will proceed just without hardware decoding enabled."
        },
        "Outputs": {
          "1": "Contains an error",
          "2": "Did not detect any errors"
        }
      },
      "VideoHasStream": {
        "Description": "Tests if a video file contains a track",
        "Label": "Video Has Stream",
        "Fields": {
          "Channels": "Channels",
          "Channels-Help": "The number of channels to test for.  Leave blank to ignore this check",
          "CheckDeleted": "Check Deleted",
          "CheckDeleted-Help": "If deleted tracks should also be checked",
          "Codec": "Codec",
          "Codec-Help": "A regular expression used to test the stream codec",
          "Default": "Default",
          "Default-Help": "If this stream should be a default stream or not.",
          "Forced": "Forced",
          "Forced-Help": "If this stream should be a forced stream or not.",
          "Invert": "Invert",
          "Invert-Help": "Inverts the result, so effectively becomes `Video Does Not Have Stream`",
          "Language": "Language",
          "Language-Help": "A regular expression used to test the stream language",
          "Stream": "Type",
          "Stream-Help": "The type of stream to look for",
          "Title": "Title",
          "Title-Help": "A regular expression used to test the stream title"
        },
        "Outputs": {
          "1": "Contains the matching track",
          "2": "Does not contain the matching track"
        }
      },
      "VideoIs10Bit": {
        "Description": "Tests if a video file is 10-Bit",
        "Label": "Video Is 10-Bit",
        "Outputs": {
          "1": "Video is 10-Bit",
          "2": "Video is not 10-Bit"
        }
      },
      "VideoIs12Bit": {
        "Description": "Tests if a video file is 12-Bit",
        "Label": "Video Is 12-Bit",
        "Outputs": {
          "1": "Video is 12-Bit",
          "2": "Video is not 12-Bit"
        }
      },
      "VideoIs8Bit": {
        "Description": "Tests if a video file is 8-Bit",
        "Label": "Video Is 8-Bit",
        "Outputs": {
          "1": "Video is 8-Bit",
          "2": "Video is not 8-Bit"
        }
      },
      "VideoIsInterlaced": {
        "Description": "Tests if a video file is interlaced",
        "Label": "Video Is Interlaced",
        "Fields": {
          "Threshold": "Threshold",
          "Threshold-Help": "The percentage of frames detected as interlaced the video must have to be considered interlaced"
        },
        "Outputs": {
          "1": "Video is interlaced",
          "2": "Video is not interlaced"
        }
      },
      "VideoResolution": {
        "Description": "Determines a video's resolution and outputs accordingly.",
        "Label": "Video Resolution",
        "Outputs": {
          "1": "Video Is 4K",
          "2": "Video is 1080p",
          "3": "Video is 720p",
          "4": "Video is SD"
        }
      }
    }
  },
  "H": {
    "264": "H.264",
    "265": "H.265"
  },
  "Plugins": {
    "VideoNodes": {
      "Description": "Plugin for the processing of video files, including but not limited to video file conversion, video file detection, upscaling, downscaling, and transcoding.",
      "Label": "Video"
    }
  }
}