public VlcMediaPlayer(VlcMedia media) { Handle = LibVlc.libvlc_media_player_new_from_media(media.Handle); if (Handle == IntPtr.Zero) { throw new VlcException(); } }
private void PlaySong(Song song) { // If the song is null there is nothing to play if (song == null) { if (PlaylistEnded != null) { PlaylistEnded(); } return; } // As soon as we are trying to play any song we are moving forward again. playbackDirection = TP_PLAYBACKDIRECTION.Forward; string temp = FindAudiofile(song); if (temp == "" || temp == null) { throw new Exception("Zu diesem Song wurde kein Audiofile gefunden."); } else if (System.IO.File.Exists(temp)) { Stop(); // This is the point where the song is actually played for real. //IMedia media = factory.CreateMedia<IMedia>(temp); //factory.CreatePlayer<IAudioPlayer>().Open(media); VlcMedia media = new VlcMedia(instance, temp); CurrentSong = song; if (vlc == null) { vlc = new VlcMediaPlayer(media); } else { vlc.Media = media; } vlc.Play(); PlaybackState = TP_PLAYBACKSTATE.Playing; // If we are not already navigating, log the song to the navigation history so it is available in case the user starts skipping if (playbackMode == TP_PLAYBACKMODE.Playlist) { totalHistory.Add(song); historyPosition++; } } else { //TODO: Automatically re-scan throw new System.IO.FileNotFoundException("Die Datei des abzuspielenden Songs wurde nicht gefunden. Möglicherweise muss die Bibliothek aktualisiert werden.", temp); } }