コード例 #1
0
ファイル: VisualSync.cs プロジェクト: zzfeed/subtitleedit
        private void VideoStartLoaded(object sender, EventArgs e)
        {
            MediaPlayerStart.Pause();
            GotoSubtitlePosition(MediaPlayerStart);

            if (MediaPlayerStart.VideoPlayer.GetType() == typeof(LibVlcDynamic))
            {
                MediaPlayerEnd.VideoPlayer = (MediaPlayerStart.VideoPlayer as LibVlcDynamic).MakeSecondMediaPlayer(MediaPlayerEnd.PanelPlayer, VideoFileName, VideoEndLoaded, VideoEndEnded);
            }
            else
            {
                UiUtil.InitializeVideoPlayerAndContainer(VideoFileName, _videoInfo, MediaPlayerEnd, VideoEndLoaded, VideoEndEnded);
            }
            timer1.Start();
            timerProgressBarRefresh.Start();

            if (AudioTrackNumber >= 0 && MediaPlayerStart.VideoPlayer is LibVlcDynamic)
            {
                var libVlc = (LibVlcDynamic)MediaPlayerStart.VideoPlayer;
                libVlc.AudioTrackNumber = AudioTrackNumber;
            }
            else if (AudioTrackNumber >= 0 && MediaPlayerStart.VideoPlayer is LibMpvDynamic)
            {
                var libMpv = (LibMpvDynamic)MediaPlayerStart.VideoPlayer;
                libMpv.AudioTrackNumber = AudioTrackNumber;
            }
        }
コード例 #2
0
ファイル: VisualSync.cs プロジェクト: zzfeed/subtitleedit
 private void Timer1Tick(object sender, EventArgs e)
 {
     if (MediaPlayerStart != null)
     {
         if (!MediaPlayerStart.IsPaused)
         {
             MediaPlayerStart.RefreshProgressBar();
             if (_startStopPosition >= 0 && MediaPlayerStart.CurrentPosition > _startStopPosition)
             {
                 MediaPlayerStart.Pause();
                 MediaPlayerStart.CurrentPosition = _startGoBackPosition;
                 _startStopPosition = -1;
             }
             UiUtil.ShowSubtitle(new Subtitle(_paragraphs), MediaPlayerStart);
         }
         if (!MediaPlayerEnd.IsPaused)
         {
             MediaPlayerEnd.RefreshProgressBar();
             if (_endStopPosition >= 0 && MediaPlayerEnd.CurrentPosition > _endStopPosition)
             {
                 MediaPlayerEnd.Pause();
                 MediaPlayerEnd.CurrentPosition = _endGoBackPosition;
                 _endStopPosition = -1;
             }
             UiUtil.ShowSubtitle(new Subtitle(_paragraphs), MediaPlayerEnd);
         }
     }
 }
コード例 #3
0
ファイル: VisualSync.cs プロジェクト: zzfeed/subtitleedit
        private void OpenVideo(string fileName)
        {
            if (File.Exists(fileName))
            {
                timer1.Stop();
                timerProgressBarRefresh.Stop();

                VideoFileName = fileName;

                var fi = new FileInfo(fileName);
                if (fi.Length < 1000)
                {
                    return;
                }

                if (MediaPlayerStart.VideoPlayer != null)
                {
                    MediaPlayerStart.Pause();
                    MediaPlayerStart.VideoPlayer.DisposeVideoPlayer();
                }
                if (MediaPlayerEnd.VideoPlayer != null)
                {
                    MediaPlayerEnd.Pause();
                    MediaPlayerEnd.VideoPlayer.DisposeVideoPlayer();
                }

                VideoInfo videoInfo = ShowVideoInfo(fileName);
                UiUtil.InitializeVideoPlayerAndContainer(fileName, videoInfo, MediaPlayerStart, VideoStartLoaded, VideoStartEnded);
            }
        }
コード例 #4
0
ファイル: VisualSync.cs プロジェクト: rragu/subtitleedit
        private void VideoStartLoaded(object sender, EventArgs e)
        {
            MediaPlayerStart.Pause();
            GotoSubtitlePosition(MediaPlayerStart);

            _startGoBackPosition = MediaPlayerStart.CurrentPosition;
            _startStopPosition   = _startGoBackPosition + 0.1;
            MediaPlayerStart.Play();

            if (MediaPlayerStart.VideoPlayer.GetType() == typeof(Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlcDynamic))
            {
                MediaPlayerEnd.VideoPlayer = (MediaPlayerStart.VideoPlayer as Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlcDynamic).MakeSecondMediaPlayer(MediaPlayerEnd.PanelPlayer, VideoFileName, VideoEndLoaded, VideoEndEnded);
            }
            else
            {
                Utilities.InitializeVideoPlayerAndContainer(MediaPlayerStart.VideoPlayer.VideoFileName, _videoInfo, MediaPlayerEnd, VideoEndLoaded, VideoEndEnded);
            }
            timer1.Start();
            timerProgressBarRefresh.Start();

            if (AudioTrackNumber > -1 && MediaPlayerStart.VideoPlayer is Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlcDynamic)
            {
                var libVlc = (Nikse.SubtitleEdit.Logic.VideoPlayers.LibVlcDynamic)MediaPlayerStart.VideoPlayer;
                libVlc.AudioTrackNumber = AudioTrackNumber;
            }
        }
コード例 #5
0
        private void FormVisualSync_FormClosing(object sender, FormClosingEventArgs e)
        {
            _timerHideSyncLabel.Stop();
            labelSyncDone.Text = string.Empty;
            timer1.Stop();
            timerProgressBarRefresh.Stop();
            if (MediaPlayerStart != null)
            {
                MediaPlayerStart.Pause();
            }
            if (MediaPlayerEnd != null)
            {
                MediaPlayerEnd.Pause();
            }

            bool change = false;

            for (int i = 0; i < _paragraphs.Count; i++)
            {
                if (_paragraphs[i].ToString() != _originalSubtitle.Paragraphs[i].ToString())
                {
                    change = true;
                    break;
                }
            }

            if (!change)
            {
                DialogResult = DialogResult.Cancel;
                return;
            }

            DialogResult dr;

            if (DialogResult == DialogResult.OK)
            {
                dr = DialogResult.Yes;
            }
            else
            {
                dr = MessageBox.Show(_language.KeepChangesMessage, _language.KeepChangesTitle, MessageBoxButtons.YesNoCancel);
            }

            if (dr == DialogResult.Cancel)
            {
                e.Cancel = true;
                timer1.Start();
                timerProgressBarRefresh.Start();
            }
            else if (dr == DialogResult.Yes)
            {
                DialogResult = DialogResult.OK;
            }
            else
            {
                DialogResult = DialogResult.Cancel;
            }
        }
コード例 #6
0
ファイル: VisualSync.cs プロジェクト: zzfeed/subtitleedit
 private void ButtonStartVerifyClick(object sender, EventArgs e)
 {
     if (MediaPlayerStart != null && MediaPlayerStart.VideoPlayer != null)
     {
         _startGoBackPosition = MediaPlayerStart.CurrentPosition;
         _startStopPosition   = _startGoBackPosition + Configuration.Settings.Tools.VerifyPlaySeconds;
         MediaPlayerStart.Play();
     }
 }
コード例 #7
0
 private void timerProgressBarRefresh_Tick(object sender, EventArgs e)
 {
     if (MediaPlayerStart.VideoPlayer != null) // && MediaPlayerStart.VideoPlayer.GetType() == typeof(QuartsPlayer))
     {
         MediaPlayerStart.RefreshProgressBar();
     }
     if (MediaPlayerEnd.VideoPlayer != null) // && MediaPlayerEnd.VideoPlayer.GetType() == typeof(QuartsPlayer))
     {
         MediaPlayerEnd.RefreshProgressBar();
     }
 }
コード例 #8
0
ファイル: VisualSync.cs プロジェクト: zzfeed/subtitleedit
        public VisualSync(Control parentControl)
        {
            UiUtil.PreInitialize(this);
            InitializeComponent();
            UiUtil.FixFonts(this);

            openFileDialog1.InitialDirectory = string.Empty;

            MediaPlayerStart.InitializeVolume(Configuration.Settings.General.VideoPlayerDefaultVolume);
            MediaPlayerEnd.InitializeVolume(Configuration.Settings.General.VideoPlayerDefaultVolume);

            labelSyncDone.Text = string.Empty;
            _language          = LanguageSettings.Current.VisualSync;
            _languageGeneral   = LanguageSettings.Current.General;
            Text = _language.Title;
            buttonOpenMovie.Text                 = _languageGeneral.OpenVideoFile;
            groupBoxMovieInfo.Text               = _languageGeneral.VideoInformation;
            labelVideoInfo.Text                  = _languageGeneral.NoVideoLoaded;
            groupBoxStartScene.Text              = _language.StartScene;
            groupBoxEndScene.Text                = _language.EndScene;
            buttonStartThreeSecondsBack.Text     = _language.ThreeSecondsBack;
            buttonThreeSecondsBack.Text          = _language.ThreeSecondsBack;
            buttonStartHalfASecondBack.Text      = _language.HalfASecondBack;
            buttonEndHalfASecondBack.Text        = _language.HalfASecondBack;
            buttonStartVerify.Text               = string.Format(_language.PlayXSecondsAndBack, Configuration.Settings.Tools.VerifyPlaySeconds);
            buttonEndVerify.Text                 = buttonStartVerify.Text;
            buttonGotoStartSubtitlePosition.Text = _language.GoToSubPosition;
            buttonGotoEndSubtitlePosition.Text   = _language.GoToSubPosition;
            buttonFindTextStart.Text             = _language.FindText;
            buttonFindTextEnd.Text               = _language.FindText;
            buttonSync.Text   = _language.Synchronize;
            buttonOK.Text     = _languageGeneral.Ok;
            buttonCancel.Text = _languageGeneral.Cancel;
            labelTip.Text     = _language.Tip;
            UiUtil.FixLargeFonts(this, buttonCancel);

            var arr = Configuration.Settings.Tools.VisualSyncStartSize?.Split(';');

            if (arr != null && arr.Length == 2 && int.TryParse(arr[0], out var x) && int.TryParse(arr[1], out var y))
            {
                var bounds = Screen.FromControl(parentControl).Bounds;
                if (x >= MinimumSize.Width && x < bounds.Width && y > MinimumSize.Height && y < bounds.Height)
                {
                    Width  = x;
                    Height = y;
                }
            }

            _timerHideSyncLabel.Tick    += timerHideSyncLabel_Tick;
            _timerHideSyncLabel.Interval = 1000;
        }
コード例 #9
0
        private void OpenVideo(string fileName)
        {
            if (File.Exists(fileName))
            {
                timer1.Stop();
                timerProgressBarRefresh.Stop();

                VideoFileName = fileName;

                var fi = new FileInfo(fileName);
                if (fi.Length < 1000)
                {
                    return;
                }

                if (MediaPlayerStart.VideoPlayer != null)
                {
                    MediaPlayerStart.Pause();
                    MediaPlayerStart.VideoPlayer.DisposeVideoPlayer();
                }
                if (MediaPlayerEnd.VideoPlayer != null)
                {
                    MediaPlayerEnd.Pause();
                    MediaPlayerEnd.VideoPlayer.DisposeVideoPlayer();
                }

                VideoInfo videoInfo = ShowVideoInfo(fileName);

                // be sure to match frames with movie
                if (_inputSubtitle.WasLoadedWithFrameNumbers) // frame based subtitles like MicroDVD
                {
                    if (Math.Abs(_videoInfo.FramesPerSecond - _oldFrameRate) > 0.02)
                    {
                        _inputSubtitle.CalculateTimeCodesFromFrameNumbers(_videoInfo.FramesPerSecond);
                        LoadAndShowOriginalSubtitle();
                        FrameRateChanged = true;
                    }
                }
                if (_inputAlternateSubtitle != null && _inputAlternateSubtitle.WasLoadedWithFrameNumbers) // frame based subtitles like MicroDVD
                {
                    if (Math.Abs(_videoInfo.FramesPerSecond - _oldFrameRate) > 0.02)
                    {
                        _inputAlternateSubtitle.CalculateTimeCodesFromFrameNumbers(_videoInfo.FramesPerSecond);
                        LoadAndShowOriginalSubtitle();
                        FrameRateChanged = true;
                    }
                }

                UiUtil.InitializeVideoPlayerAndContainer(fileName, videoInfo, MediaPlayerStart, VideoStartLoaded, VideoStartEnded);
            }
        }
コード例 #10
0
        public VisualSync()
        {
            UiUtil.PreInitialize(this);
            InitializeComponent();
            UiUtil.FixFonts(this);

            openFileDialog1.InitialDirectory = string.Empty;

            MediaPlayerStart.InitializeVolume(Configuration.Settings.General.VideoPlayerDefaultVolume);
            MediaPlayerEnd.InitializeVolume(Configuration.Settings.General.VideoPlayerDefaultVolume);

            labelSyncDone.Text = string.Empty;
            _language          = Configuration.Settings.Language.VisualSync;
            _languageGeneral   = Configuration.Settings.Language.General;
            Text = _language.Title;
            buttonOpenMovie.Text                 = _languageGeneral.OpenVideoFile;
            groupBoxMovieInfo.Text               = _languageGeneral.VideoInformation;
            labelVideoInfo.Text                  = _languageGeneral.NoVideoLoaded;
            groupBoxStartScene.Text              = _language.StartScene;
            groupBoxEndScene.Text                = _language.EndScene;
            buttonStartThreeSecondsBack.Text     = _language.ThreeSecondsBack;
            buttonThreeSecondsBack.Text          = _language.ThreeSecondsBack;
            buttonStartHalfASecondBack.Text      = _language.HalfASecondBack;
            buttonEndHalfASecondBack.Text        = _language.HalfASecondBack;
            buttonStartVerify.Text               = string.Format(_language.PlayXSecondsAndBack, Configuration.Settings.Tools.VerifyPlaySeconds);
            buttonEndVerify.Text                 = buttonStartVerify.Text;
            buttonGotoStartSubtitlePosition.Text = _language.GoToSubPosition;
            buttonGotoEndSubtitlePosition.Text   = _language.GoToSubPosition;
            buttonFindTextStart.Text             = _language.FindText;
            buttonFindTextEnd.Text               = _language.FindText;
            buttonSync.Text   = _language.Synchronize;
            buttonOK.Text     = _languageGeneral.Ok;
            buttonCancel.Text = _languageGeneral.Cancel;
            labelTip.Text     = _language.Tip;
            UiUtil.FixLargeFonts(this, buttonCancel);
            _timerHideSyncLabel.Tick    += timerHideSyncLabel_Tick;
            _timerHideSyncLabel.Interval = 1000;
        }
コード例 #11
0
ファイル: VisualSync.cs プロジェクト: zzfeed/subtitleedit
        private void VisualSync_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
            {
                DialogResult = DialogResult.Cancel;
            }
            else if (e.KeyData == UiUtil.HelpKeys)
            {
                UiUtil.ShowHelp("#visual_sync");
            }
            else if (e.Modifiers == Keys.Control && e.KeyCode == Keys.O)
            {
                ButtonOpenMovieClick(null, null);
            }
            else if (e.Modifiers == Keys.Control && e.KeyCode == Keys.F)
            {
                if (_isStartSceneActive)
                {
                    ButtonFindTextStartClick(null, null);
                }
                else
                {
                    ButtonFindTextEndClick(null, null);
                }
            }
            else if (MediaPlayerStart != null && MediaPlayerEnd != null)
            {
                if (e.Modifiers == Keys.Control && e.KeyCode == Keys.S)
                {
                    if (_isStartSceneActive)
                    {
                        _startStopPosition = -1;
                        if (!MediaPlayerStart.IsPaused)
                        {
                            MediaPlayerStart.Pause();
                        }
                    }
                    else
                    {
                        _endStopPosition = -1;
                        if (!MediaPlayerEnd.IsPaused)
                        {
                            MediaPlayerEnd.Pause();
                        }
                    }
                }
                else if (e.Modifiers == Keys.Control && e.KeyCode == Keys.P)
                {
                    if (_isStartSceneActive)
                    {
                        _startStopPosition = -1;
                        MediaPlayerStart.TogglePlayPause();
                    }
                    else
                    {
                        _endStopPosition = -1;
                        MediaPlayerStart.TogglePlayPause();
                    }
                }
                else if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.Left)
                {
                    if (_isStartSceneActive)
                    {
                        GoBackSeconds(0.5, MediaPlayerStart);
                    }
                    else
                    {
                        GoBackSeconds(0.5, MediaPlayerEnd);
                    }

                    e.SuppressKeyPress = true;
                }
                else if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.Right)
                {
                    if (_isStartSceneActive)
                    {
                        GoBackSeconds(-0.5, MediaPlayerStart);
                    }
                    else
                    {
                        GoBackSeconds(-0.5, MediaPlayerEnd);
                    }

                    e.SuppressKeyPress = true;
                }
                else if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Left)
                {
                    if (_isStartSceneActive)
                    {
                        GoBackSeconds(0.1, MediaPlayerStart);
                    }
                    else
                    {
                        GoBackSeconds(0.1, MediaPlayerEnd);
                    }

                    e.SuppressKeyPress = true;
                }
                else if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Right)
                {
                    if (_isStartSceneActive)
                    {
                        GoBackSeconds(-0.1, MediaPlayerStart);
                    }
                    else
                    {
                        GoBackSeconds(-0.1, MediaPlayerEnd);
                    }

                    e.SuppressKeyPress = true;
                }
                else if (e.Modifiers == (Keys.Control | Keys.Shift) && e.KeyCode == Keys.Right)
                {
                    if (_isStartSceneActive)
                    {
                        GoBackSeconds(1.0, MediaPlayerStart);
                    }
                    else
                    {
                        GoBackSeconds(1.0, MediaPlayerEnd);
                    }

                    e.SuppressKeyPress = true;
                }
                else if (e.Modifiers == (Keys.Control | Keys.Shift) && e.KeyCode == Keys.Left)
                {
                    if (_isStartSceneActive)
                    {
                        GoBackSeconds(-1.0, MediaPlayerStart);
                    }
                    else
                    {
                        GoBackSeconds(-1.0, MediaPlayerEnd);
                    }

                    e.SuppressKeyPress = true;
                }
                else if (e.Modifiers == Keys.None && e.KeyCode == Keys.Space)
                {
                    if (_isStartSceneActive)
                    {
                        MediaPlayerStart.TogglePlayPause();
                    }
                    else
                    {
                        MediaPlayerEnd.TogglePlayPause();
                    }

                    e.SuppressKeyPress = true;
                }
            }
        }
コード例 #12
0
ファイル: VisualSync.cs プロジェクト: zzfeed/subtitleedit
 private void VideoStartEnded(object sender, EventArgs e)
 {
     MediaPlayerStart.Pause();
 }