public void Start(double offsetTop, double offsetLeft, double width, double height, string location, string name)
        {
            VlcContext.StartupOptions.AddOption("--screen-top=" + offsetTop);
            VlcContext.StartupOptions.AddOption("--screen-left=" + offsetLeft);
            VlcContext.StartupOptions.AddOption("--screen-width=" + width);
            VlcContext.StartupOptions.AddOption("--screen-height=" + height);
            VlcContext.Initialize();
            vlcLocationMedia = new LocationMedia("screen://");
            vlcLocationMedia.AddOption(String.Format(vlcMediaOption, location + "\\" + name));
            audioRecorder.Init(location + "\\" + name);

            durationWatch.Reset();

            vlcControl = new VlcControl();
            vlcControl.Media = vlcLocationMedia;
            vlcControl.Playing += (sender, args) =>
            {
                durationWatch.Start();
                audioRecorder.Play();
            };
            vlcControl.Stopped += (sender, args) =>
            {
                durationWatch.Stop();
                audioRecorder.Stop();
            };
        }
Esempio n. 2
0
 private void OnBtnPlayClick(object sender, RoutedEventArgs e)
 {
     if (string.IsNullOrEmpty(myTxtUrl.Text))
         return;
     var media = new LocationMedia(myTxtUrl.Text);
     media.StateChanged +=
         delegate(MediaBase sender2, VlcEventArgs<States> e2)
             {
                 if (e2.Data == States.Ended && media.SubItems.Count > 0)
                 {
                     LocationMedia newMedia = media.SubItems[0];
                     //newMedia.AddOption(":file-caching=1000");
                     newMedia.ParsedChanged +=
                         delegate
                             {
                                 myTxtTitle.Text = newMedia.Metadatas.Title;
                                 myTxtArtist.Text = newMedia.Metadatas.Artist;
                             };
                     myVlcControl.Play(newMedia);
                 }
             };
     media.ParsedChanged +=
         delegate { myTxtMRL.Text = media.MRL; };
     myVlcControl.Play(media);
 }
Esempio n. 3
0
 private void OnLoaded(object sender, RoutedEventArgs e)
 {
     var vlcControl = new VlcControl();
     var rstpAddress = "rtsp://" + Address + "/snl/live/1/1/";
     var locationMedia = new LocationMedia(rstpAddress);
     vlcControl.Media = locationMedia;
     _windowsFormsHost.Child = vlcControl;
 }
Esempio n. 4
0
        private void OnVlcEvent(ref LibVlcEventArgs eventData, IntPtr userData)
        {
            switch (eventData.Type)
            {
            case EventTypes.MediaDurationChanged:
                EventsHelper.RaiseEvent(DurationChanged, this, new VlcEventArgs <long>(eventData.MediaDurationChanged.NewDuration));
                break;

            case EventTypes.MediaFreed:
                EventsHelper.RaiseEvent(Freed, this, new VlcEventArgs <EventArgs>(EventArgs.Empty));
                break;

            case EventTypes.MediaMetaChanged:
                EventsHelper.RaiseEvent(MetaChanged, this, new VlcEventArgs <Metadatas>(eventData.MediaMetaChanged.MetaType));
                break;

            case EventTypes.MediaParsedChanged:
                EventsHelper.RaiseEvent(ParsedChanged, this, new VlcEventArgs <int>(eventData.MediaParsedChanged.NewStatus));
                break;

            case EventTypes.MediaStateChanged:
                EventsHelper.RaiseEvent(StateChanged, this, new VlcEventArgs <States>(eventData.MediaStateChanged.NewState));
                break;

            //TODO
            case EventTypes.MediaSubItemAdded:
                MediaBase media;
                if (this is LocationMedia)
                {
                    media = new LocationMedia(eventData.MediaSubitemAdded.NewChild);
                }
                else
                {
                    media = new PathMedia(eventData.MediaSubitemAdded.NewChild);
                }
                EventsHelper.RaiseEvent(MediaSubItemAdded, this, new VlcEventArgs <MediaBase>(media));
                break;
            }
        }
Esempio n. 5
0
 private void OnVlcEvent(ref LibVlcEventArgs eventData, IntPtr userData)
 {
     switch (eventData.Type)
     {
         case EventTypes.MediaDurationChanged:
             EventsHelper.RaiseEvent(DurationChanged, this, new VlcEventArgs<long>(eventData.MediaDurationChanged.NewDuration));
             break;
         case EventTypes.MediaFreed:
             EventsHelper.RaiseEvent(Freed, this, new VlcEventArgs<EventArgs>(EventArgs.Empty));
             break;
         case EventTypes.MediaMetaChanged:
             EventsHelper.RaiseEvent(MetaChanged, this, new VlcEventArgs<Metadatas>(eventData.MediaMetaChanged.MetaType));
             break;
         case EventTypes.MediaParsedChanged:
             EventsHelper.RaiseEvent(ParsedChanged, this, new VlcEventArgs<int>(eventData.MediaParsedChanged.NewStatus));
             break;
         case EventTypes.MediaStateChanged:
             EventsHelper.RaiseEvent(StateChanged, this, new VlcEventArgs<States>(eventData.MediaStateChanged.NewState));
             break;
         //TODO
         case EventTypes.MediaSubItemAdded:
             MediaBase media;
             if (this is LocationMedia)
                 media = new LocationMedia(eventData.MediaSubitemAdded.NewChild);
             else
                 media = new PathMedia(eventData.MediaSubitemAdded.NewChild);
             EventsHelper.RaiseEvent(MediaSubItemAdded, this, new VlcEventArgs<MediaBase>(media));
             break;
     }
 }
Esempio n. 6
0
        private void OnMediaStateChange(MediaBase sender, Vlc.DotNet.Core.VlcEventArgs<Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
        {
            if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing)
            {
                if (!initialized)
                {
                    if (media.Duration.TotalMilliseconds > 0)
                    {
                        if (!Autoplay)
                            vlc.Pause();
                        else
                            rect.Visibility = System.Windows.Visibility.Hidden;

                        durationMilliseconds = (float)media.Duration.TotalMilliseconds;
                        initialized = true;
                        OnMediaLoaded();
                    }
                    else if (media.SubItems.Count > 0)
                    {
                        var subItems = media.SubItems;
                        media.StateChanged -= OnMediaStateChange;
                        subItems[0].StateChanged += OnMediaStateChange;
                        media = subItems[0];
                        vlc.Media = subItems[0];
                        vlc.Play();
                    }
                    else
                    {
                        OnMediaFailed();
                    }
                }
            }
        }
Esempio n. 7
0
        public override void Load(Uri uri)
        {
            media = new LocationMedia(uri.AbsoluteUri);
            if (uri.Scheme == "dshow")
            {
                var nvc = uri.ParseQueryString();
                foreach (var key in nvc.AllKeys)
                {
                    media.AddOption(key + "=" + nvc[key]);
                }
            }

            media.StateChanged += OnMediaStateChange;

            bool doLoop = false;

            vlc.EncounteredError += (sender, args) =>
            {
                OnMediaFailed();
            };

            vlc.EndReached += (sender, args) =>
            {
                if (!loop)
                {
                    Stop();
                    OnPlaybackEnded();
                }
                else
                {
                    doLoop = true;
                }
            };

            vlc.Playing += (sender, args) =>
            {
                if (loop && doLoop)
                {
                    OnSeekStart();
                }
                doLoop = false;
            };

            vlc.Media = media;
        }
Esempio n. 8
0
 private void ButtonPlayYoutubeSample(object sender, RoutedEventArgs e)
 {
     var media = new LocationMedia(@"http://www.youtube.com/watch?v=WAjt5wPJVqM");
     media.StateChanged +=
         delegate(MediaBase s, VlcEventArgs<States> args)
         {
             if (args.Data == States.Ended)
             {
                 var subItems = media.SubItems;
                 if (subItems.Count > 0)
                 {
                     myVlcControl.Play(subItems[0]);
                 }
             }
         };
     myVlcControl.PlaybackMode = PlaybackModes.Loop;
     myVlcControl.Play();
 }