public static void SetMp4FileMetadata(this ConsoleClient item, TvEpisode episode, string input, string output)
        {
            var seasonNumArg  = (episode.SeasonNumber == Helpers.InvalidSeasonNumber) ? String.Empty : $"--TVSeasonNum {episode.SeasonNumber}";
            var episodeNumArg = (episode.EpisodeNumber == Helpers.InvalidEpisodeNumber) ? String.Empty : $"--TVEpisodeNum {episode.EpisodeNumber}";
            var artworkArg    = (episode.ThumbnailFile == null) ? String.Empty : $"--artwork \"{episode.ThumbnailFile}\"";
            var aired         = episode.AiredTime.ToString(Helpers.UtcDateTimeFormat);

            var args = new string[]
            {
                $"\"{input}\"",
                $"--title \"{episode.Title}\"",
                "--stik \"TV Show\"",
                $"--year \"{aired}\"",
                $"--genre \"{episode.Genre}\"",
                $"--TVNetwork \"{episode.Channel}\"",
                $"--TVShowName \"{episode.ShowName}\"",
                seasonNumArg,
                episodeNumArg,
                $"--description \"{episode.Description}\"",
                $"--comment \"{episode.Credits}\"",
                artworkArg,
                $"--output \"{output}\""
            };

            item.Run(args);
        }
        public static void GetMetadataAsJson(this ConsoleClient item, string source)
        {
            var args = new string[]
            {
                "-hide_banner",
                "-v quiet",
                "-print_format json",
                "-show_format",
                "-show_streams",
                "-show_programs",
                $"\"{source}\"",
            };

            item.Run(args);
        }
        /// <summary>
        /// Extract thumbnail image from video file
        /// </summary>
        /// <param name="item"></param>
        /// <param name="input">Video file to try to extract thumbnail from</param>
        /// <param name="output">Destination path for the thumbnail</param>
        /// <remarks>
        /// There are a number of ways of extracting a static thumbnail from a video file including the following:-
        ///     This requires that the thumbnail video track has a metadata tag 'title' with the value 'TV Thumbnail'
        ///<code>
        /// ffmpeg -hide_banner -i "<paramref name="input"/>" -map 0:m:title:"TV Thumbnail" -vframes 1 "<paramref name="output"/>"
        ///</code>
        ///
        /// <code>
        ///     ffmpeg -hide_banner -i "<paramref name="input"/>" -map 0:v -map -V -vframes 1 "<paramref name="output"/>"
        /// </code>
        /// </remarks>
        public static void ExtractThumbnailToFile(this ConsoleClient item, string input, string output)
        {
            var args = new string[]
            {
                "-hide_banner",
                "-v quiet",
                $"-i \"{input}\"",
                "-map 0:m:title:\"TV Thumbnail\"",
                "-vframes 1",
                "-y",
                $"\"{output}\""
            };

            item.Run(args);
        }
        public static void ConvertWtvToMp4File(this ConsoleClient item, string input, string output)
        {
            var args = new string[]
            {
                "-hide_banner",         // Hide ffmpeg banner output
                "-v error",             // Suppress all but errors
                "-nostats",             // Don't display statistics
                $"-i \"{input}\"",      // Input video
                "-vf yadif",            // Deinterlace the input video
                //"-map 0:V",             // include all video streams that are not attached pictures, video thumbnails or cover art
                //"-map 0:a",             // include all audio streams
                //"-vcodec h264",         // encode video streams as H264
                //"-acodec aac",          // encode audio streams as AAC
                "-y",                   // Overwrite the output file if it exists
                $"\"{output}\""         // Output video file
            };

            item.Run(args);
        }