예제 #1
0
 /// <summary>
 /// 时间变化
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void Events_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     this.Dispatcher.BeginInvoke(new Action(delegate
     {
         labTime.Content = TimeSpan.FromMilliseconds(e.NewTime).ToString().Substring(0, 8);
     }));
 }
예제 #2
0
 private void vlcControl1_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     if (!f)
     {
         label1.Invoke(new Action(() => label1.Text = TimeSpan.FromMilliseconds(e.NewTime).ToString(@"hh\:mm\:ss")));
     }
 }
예제 #3
0
파일: TvForm.cs 프로젝트: ldj-droid/FoxIPTV
        /// <summary>The LibVLC TimeChanged event handler handler</summary>
        /// <param name="sender">The object that triggered the event</param>
        /// <param name="e">The event arguments</param>
        private void VlcControl_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            lock (_isClosingLock)
            {
                if (_isClosing)
                {
                    return;
                }
            }

            if (!_ccDetected && vlcControl.IsPlaying && vlcControl.SubTitles.Count != 0)
            {
                _ccDetected = true;

                this.InvokeIfRequired(GuiShow);

                ThreadPool.QueueUserWorkItem(state => ProcessClosedCaptioning());
            }

            this.InvokeIfRequired(() =>
            {
                lock (_isClosingLock) // TODO: Is this dangerous?
                {
                    if (_isClosing || IsDisposed)
                    {
                        return;
                    }

                    var time             = new TimeSpan(e.NewTime * 10000);
                    timeStatusLabel.Text = string.Format(Resources.TvForm_PlaybackTime, time.Minutes.ToString().PadLeft(2, '0'), time.Seconds.ToString().PadLeft(2, '0'));
                }
            });
        }
예제 #4
0
        void TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            this.Dispatcher.BeginInvoke(new Action(delegate
            {
                if (MediaPlayer.Time < this.time.time)
                {
                    return;
                }

                time            = MediaPlayer.Time;
                second          = time;
                wait_for_update = false;

                RaisePropertyChanged("Second");
            }));
        }
예제 #5
0
        private void TestOnTimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            PositionSlider.Dispatcher.BeginInvoke(new Action(() => { ignoreevent   = true; PositionSlider.Value = myControl.MediaPlayer.Position * 10; ignoreevent = false;
                                                                     TimeSpan time = new TimeSpan(myControl.MediaPlayer.Time * 10000);
                                                                     TimeSpan dur  = myControl.MediaPlayer.GetCurrentMedia().Duration;
                                                                     TimeSpan rem  = dur - time;
                                                                     switch (displayOption)
                                                                     {
                                                                     case DisplayOptions.Elapsed: timeLabel.Content = String.Format("{0:mm\\:ss}", time); break;

                                                                     case DisplayOptions.Remaining: timeLabel.Content = String.Format("{0:mm\\:ss}", rem); break;

                                                                     case DisplayOptions.ElapsedAndTotal: timeLabel.Content = String.Format("{0:mm\\:ss}/{1:mm\\:ss}", time, dur); break;
                                                                     }
                                                             }));
        }
예제 #6
0
 /// 當影片時間改變
 private void TimeChangedEventHandler(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     //Console.WriteLine("TimeChangedEventHandler");
     this.SettingUI(() =>
     {
         if (this.Grid_Loading.Visibility == Visibility.Visible && this.Vlc_VideoPlayer.SourceProvider.MediaPlayer.IsPlaying())
         {
             this.Grid_Loading.Visibility = Visibility.Collapsed;
         }
         else if (!this.Vlc_VideoPlayer.SourceProvider.MediaPlayer.IsPlaying() && this.Grid_Loading.Visibility == Visibility.Collapsed)
         {
             this.Grid_Loading.Visibility = Visibility.Visible;
         }
     });
     // 回放功能必須使用StreamLink將起始位置導向欲回放位置, 但重啟StreamLink後雖導向正確位置, 但播放器Time參數也是從0開始, 因此用offset來記錄播放到哪
     this.VideoPlayerModel.NowDuration = TimeSpan.FromMilliseconds(e.NewTime) + this.VideoPlayerModel.NowDurationOffSet;
 }
예제 #7
0
        private void VlcMediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            var m = sender as VlcMediaPlayer;
            var a = m.Audio;

            if (IsMute && !VlcMediaPlayer.Audio.IsMute)
            {
                VlcMediaPlayer.Audio.IsMute = true;
            }
            if (!IsMute && VlcMediaPlayer.Audio.IsMute)
            {
                VlcMediaPlayer.Audio.IsMute = false;
            }
            if (VlcMediaPlayer.Audio.Volume != Volume)
            {
                VlcMediaPlayer.Audio.Volume = Volume;
            }
        }
        private void MediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            vlcControl.SourceProvider.MediaPlayer.TimeChanged -= MediaPlayer_TimeChanged;

            ThreadPool.QueueUserWorkItem(_ =>
            {
                long length  = vlcControl.SourceProvider.MediaPlayer.Length;
                int duration = Convert.ToInt32(length / 1000.0);


                StorageFile storageFile = storageFileBll.insert(this.sourceFilePath, destFilePath, 1, duration);

                //直接变更控件背景
                App.Current.Dispatcher.Invoke((Action)(() =>
                {
                    backgroundMusicUrl.Text = destFilePath;
                    backgroundMusicUrl.Tag = storageFile;
                }));

                vlcControl?.Dispose();
            });
        }
예제 #9
0
        private void MediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            vlcControl.SourceProvider.MediaPlayer.TimeChanged -= MediaPlayer_TimeChanged;
            string   shotJpg  = FileUtil.replaceExt(destFilePath, "jpg");
            FileInfo shotFile = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + shotJpg);

            ThreadPool.QueueUserWorkItem(_ =>
            {
                Console.WriteLine("视频截图----------");
                vlcControl.SourceProvider.MediaPlayer.TakeSnapshot(shotFile, 0, 0);
                long length  = vlcControl.SourceProvider.MediaPlayer.Length;
                int duration = Convert.ToInt32(length / 1000.0);

                int jpgWidth  = 0;
                int jpgHeight = 0;
                try
                {
                    System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + shotJpg);
                    jpgWidth  = sourceImage.Width;
                    jpgHeight = sourceImage.Height;
                }
                catch (Exception)
                {
                }
                StorageVideo storageVideo = storageVideoBll.insert(this.sourceFilePath, destFilePath, duration, shotJpg, jpgWidth, jpgHeight, folderId);


                //插入一个视频到列表
                App.Current.Dispatcher.Invoke((Action)(() =>
                {
                    Canvas newVideo = initOneVideo(storageVideo);
                    videoListWrap.Children.Insert(0, newVideo);
                    selectButton(newVideo);
                }));

                vlcControl?.Dispose();
            });
        }
        private void MediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            vlcControl.SourceProvider.MediaPlayer.TimeChanged -= MediaPlayer_TimeChanged;

            ThreadPool.QueueUserWorkItem(_ =>
            {
                long length  = vlcControl.SourceProvider.MediaPlayer.Length;
                int duration = Convert.ToInt32(length / 1000.0);



                StorageFile storageFile = storageFileBll.insert(this.sourceFilePath, destFilePath, folderId, duration);

                //插入一个音频到列表
                App.Current.Dispatcher.Invoke((Action)(() =>
                {
                    Canvas newImage = initOneFile(storageFile);
                    imageListWrap.Children.Insert(0, newImage);
                    selectButton(newImage);
                }));

                vlcControl?.Dispose();
            });
        }
예제 #11
0
 private void OnVlcTimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     myLblVlcPosition.InvokeIfRequired(l => l.Text = TimeSpan.FromMilliseconds(e.NewTime).ToString(@"hh\:mm\:ss"));
 }
예제 #12
0
 private void OnTimeChangedInternal(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     OnTimeChanged(e.NewTime);
 }
예제 #13
0
 private void _vlcMediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     Console.WriteLine($"time: {e.NewTime / 1000}");
 }
예제 #14
0
 private void vlcPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     //vlcPlayer.Audio.Volume = 50;
     _stopWatch.Restart();
     _currentTime = e.NewTime;
 }
예제 #15
0
 private void vlcControl1_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
 }
예제 #16
0
 private void TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     CurrentTime = e.NewTime;
 }
예제 #17
0
        private void myVlcControl_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            if (isVideoSliderChangedByHand || mainViewModel.VideoViewModel.IsLoading)
            {
                return;
            }

            this.BeginInvokeIfRequired(_ =>
            {
                if (myVlcControl == null)
                {
                    return;
                }

                var videoTime   = myVlcControl.MediaPlayer.Time;
                var segmentPart = getCurrentSegmentPart(videoTime);
                updateLabels(segmentPart, videoTime);

                if (loopShouldBePaused)
                {
                    // the subtitle and other labels have been updated, the loop can be paused
                    myVlcControl.MediaPlayer.Pause();
                    loopShouldBePaused = false;
                    return;
                }

                if (isVideoTimeChangedByHand)
                {
                    return;
                }

                // handle the looping
                long loopStart = (Settings.Instance.PlayMode == PlayMode.Selection && segmentPartsToLoop.Any()) ?
                                 ((segmentPartsToLoop.First().Subtitle.Start - Settings.Instance.TimePaddingForLoop < myVlcControl.MediaPlayer.Length - startOffsetInMs) ?
                                  (Math.Max(0, segmentPartsToLoop.First().Subtitle.Start - Settings.Instance.TimePaddingForLoop)) : 0) : 0;
                long loopEnd = (Settings.Instance.PlayMode == PlayMode.Selection && segmentPartsToLoop.Any()) ?
                               Math.Min(segmentPartsToLoop.Last().Subtitle.End + Settings.Instance.TimePaddingForLoop, myVlcControl.MediaPlayer.Length - endOffsetInMs) :
                               myVlcControl.MediaPlayer.Length - endOffsetInMs;

                if (e.NewTime >= loopEnd && !startTimeOutOfVideoBounds)
                {
                    if (Settings.Instance.LoopSelection && (Settings.Instance.LoopNumber == 0 || currentLoopNumber < Settings.Instance.LoopNumber))
                    {
                        // looping continues
                        myVlcControl.MediaPlayer.Time = loopStart;
                        if (Settings.Instance.LoopNumber == 0)
                        {
                            currentLoopNumber = 0;
                        }
                        else
                        {
                            currentLoopNumber++;
                        }
                    }
                    else
                    {
                        // end of looping
                        mainViewModel.VideoViewModel.IsPlaying = false;
                        myVlcControl.MediaPlayer.Time          = loopStart;
                        loopShouldBePaused = true;
                        currentLoopNumber  = 0;
                    }
                    videoTime = loopStart;
                }

                isVideoSliderChangedByHand = true;
                sliderVideo.Value          = videoTime;
                isVideoSliderChangedByHand = false;
            });
        }
예제 #18
0
 /// <summary>
 /// Event handler for Time changed.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void PlayerOnTimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
 {
     // I don't print this to keep console "clean".
     //Console.WriteLine(@"PlayerOnPlaying");
 }
예제 #19
0
        public void SliderChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            VideoTime = videoView.MediaPlayer.Time;

            //Debug.WriteLine(videoView.MediaPlayer.Position + "; " + videoView.MediaPlayer.Time); https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
        }
예제 #20
0
        private void _vlcMediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            var time = TimeSpan.FromMilliseconds(e.NewTime);

            TimeChanged?.Invoke(time);
        }
예제 #21
0
        private void MediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e)
        {
            long time = e.NewTime / 1000;

            VM.TimeIndex = $"{Math.Floor((decimal)time / 60).ToString().PadLeft(2, '0')}:{(time % 60).ToString().PadLeft(2, '0')}";
        }