示例#1
0
        private void button1_Click(object sender, EventArgs e)
        {
            PlayerState state = VideoPlayerAPIFactory.CreateVideoPlayerAPI().GetPlayerState();

            if (state.position == -1)
            {
                return;
            }
            var            result         = Task.Run(async() => await FFmpeg.GetMediaInfo(state.filePath));
            StreamSelector streamSelector = new StreamSelector(result.Result);
            var            formResult     = streamSelector.ShowDialog();

            if (formResult == DialogResult.OK)
            {
                selectedAudio    = streamSelector.GetSelectedAudio();
                selectedSubtitle = streamSelector.GetSelectedSub();
            }
        }
示例#2
0
        private void ShowCropDialog()
        {
            PlayerState state = VideoPlayerAPIFactory.CreateVideoPlayerAPI().GetPlayerState();

            if (state.position == -1)
            {
                ShowMessage(MessageType.Error, "Can't connect to video player");
                return;
            }
            String screenPath = Path.ChangeExtension(Path.GetTempFileName(), "png");
            var    result     = Conversion.Snapshot(state.filePath, screenPath, TimeSpan.FromMilliseconds(state.position)).Start().Result;

            if (!result.Success)
            {
                ShowMessage(MessageType.Error, "Getting screenshot failed");
                return;
            }
            var image = Image.FromFile(screenPath);

            imageCropDialog.imageCropBox.Image = image;
            imageCropDialog.imageCropBox.SelectNone();
            var    display  = Screen.PrimaryScreen.WorkingArea;
            double wScale   = image.Width * 1.0 / display.Width;
            double hScale   = image.Height * 1.0 / display.Height;
            double maxScale = Math.Max(wScale, hScale);

            if (maxScale <= 1.0)
            {
                imageCropDialog.Size = image.Size;
            }
            else
            {
                imageCropDialog.Width  = (int)(image.Width / maxScale);
                imageCropDialog.Height = (int)(image.Height / maxScale);
            }
            if (imageCropDialog.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            var    region = imageCropDialog.imageCropBox.SelectionRegion;
            String crop   = String.Format("crop={0}:{1}:{2}:{3}", (int)region.Width, (int)region.Height, (int)region.X, (int)region.Y);

            CutGif(start, end, fileName, crop);
        }
示例#3
0
        private void HotkeyHandler(object sender, HotkeyEventArgs e)
        {
            GiferActionId actionId;

            if (!Enum.TryParse(e.Name, out actionId))
            {
                return;
            }
            switch (actionId)
            {
            case GiferActionId.MarkStart: {
                PlayerState state = VideoPlayerAPIFactory.CreateVideoPlayerAPI().GetPlayerState();
                if (state.position == -1)
                {
                    ShowMessage(MessageType.Error, "Can't connect to video player");
                }
                else
                {
                    if (fileName != state.filePath)
                    {
                        fileName = state.filePath;
                        end      = -1;
                    }
                    start = state.position;
                    ShowMessage(MessageType.Info, "Marked start position " + TimeSpan.FromMilliseconds(start).ToString());
                }
            }
            break;

            case GiferActionId.MarkEnd: {
                PlayerState state = VideoPlayerAPIFactory.CreateVideoPlayerAPI().GetPlayerState();
                if (state.position == -1)
                {
                    ShowMessage(MessageType.Error, "Can't connect to video player");
                }
                else
                {
                    if (fileName != state.filePath)
                    {
                        fileName = state.filePath;
                        start    = -1;
                    }
                    end = state.position;
                    ShowMessage(MessageType.Info, "Marked end position " + TimeSpan.FromMilliseconds(end).ToString());
                }
            }
            break;

            case GiferActionId.CreateDefault: {
                if (start != -1 && end != -1)
                {
                    if (start > end)
                    {
                        int t = start;
                        start = end;
                        end   = t;
                    }
                    CutGif(start, end, fileName);
                }
            }
            break;

            case GiferActionId.CreatePadded: {
                if (start != -1 && end != -1)
                {
                    if (start > end)
                    {
                        int t = start;
                        start = end;
                        end   = t;
                    }
                    ShowPadDialog();
                }
            }
            break;

            case GiferActionId.CreateCropped: {
                if (start != -1 && end != -1)
                {
                    if (start > end)
                    {
                        int t = start;
                        start = end;
                        end   = t;
                    }
                    ShowCropDialog();
                }
            }
            break;

            case GiferActionId.CreateWithSubs: {
                if (start != -1 && end != -1)
                {
                    if (start > end)
                    {
                        int t = start;
                        start = end;
                        end   = t;
                    }
                    CutGif(start, end, fileName, subtitles: true);
                }
            }
            break;

            case GiferActionId.CreateCustom: {
                if (start != -1 && end != -1)
                {
                    if (start > end)
                    {
                        int t = start;
                        start = end;
                        end   = t;
                    }
                    CutGif(start, end, fileName, subtitles: Configuration.CustomKeepSubs, fullResolution: Configuration.CustomFullResolution, keepAudio: Configuration.CustomKeepAudio);
                }
            }
            break;
            }
            e.Handled = true;
        }