public async Task <ExtractResult> GifExtractRemote(double start, double end, string subs)
        {
            var streams = await Ydl.GetAVStreamUrlsAsync(CurrentMediaElement.Id);

            if (streams == null)
            {
                return(new ExtractResult(false, "Youtube-dl failed to get av streams"));
            }

            var htmlCtrl = ContentEx.GetFirstHtmlCtrl();
            var refs     = htmlCtrl?.GetReferences();

            var filename = $"{refs?.Title ?? CurrentMediaElement.Id}-{start}-{end}";
            var filepath = MediaPlayerFilesystem.ImageDir.CombineFile(filename).FullPath;

            if (!await Ffmpeg.GifExtract(streams.Video, start, end, filepath))
            {
                return(new ExtractResult(false, "Ffmpeg failed to create gif extract"));
            }

            List <ContentBase> contents = new List <ContentBase>();
            var htmlContent             = subs ?? string.Empty;

            htmlContent += "\r\n";
            htmlContent += $"<img href='{filepath}'>";
            var mainHtml = new TextContent(true, htmlContent);

            contents.Add(mainHtml);

            refs.Title += $": Gif Extract - {start} -> {end}"; // TODO: Convert to human readable
            var priority = MediaPlayerState.Instance.Config.DefaultExtractPriority;
            var res      = ContentEx.CreateSMElement(ExpectedElementId, priority, contents, refs, false);

            return(new ExtractResult(res == CreationResult.Ok, res.Name()));
        }