public static AudioTrack GetNextTrack(bool trackChangeByUserInput, Settings settings, string videoUrl, AudioTrack selectedTrack = null) { if (WaveOut != null) { WaveOut.Stop(); } if (settings.Shuffle && PlaylistManager.CurrentPlaylist.UnplayedTracks.Count == 0 && PlaylistManager.CurrentPlaylist.ShuffledPlaylist.Count == 0) { PlaylistManager.CurrentPlaylist.UnplayedTracks.AddRange(PlaylistManager.CurrentPlaylist.SortedPlaylist); } AudioTrack nextTrack; if (settings.Autoplay != Autoplay.Off) { int trackIndex = PlaylistManager.CurrentPlaylist.SortedPlaylist.Count; nextTrack = TrackFactory.CreateAudioTrack(videoUrl, trackIndex, true); } else { if (trackChangeByUserInput) { if (settings.Shuffle) { NextTrackByUserInput_Shuffle(out nextTrack, selectedTrack); } else { NextTrackByUserInput_Sorted(out nextTrack, selectedTrack); } } else { if (settings.Repeat == Repeat.RepeatOne) { nextTrack = PlaylistManager.CurrentPlaylist.CurrentTrack; } else { if (settings.Shuffle) { NextTrackAutomatic_Shuffle(out nextTrack, settings); } else { NextTrackAutomatic_Sorted(out nextTrack, settings); } } } } return(nextTrack); }
public static void PlayTrack(AudioTrack trackToPlay, bool mute, float volume, out bool audioUrlUnaccessible) { audioUrlUnaccessible = false; try { bool scrambled = trackToPlay.Scrambled; string videoUrl = trackToPlay.VideoUrl; var doc = new HtmlWeb().Load(videoUrl); trackToPlay.AudioUrl = TrackFactory.GetAudioUrl(doc, videoUrl, ref scrambled); if (!string.IsNullOrEmpty(trackToPlay.AudioUrl)) { MediaReader = new MediaFoundationReader(trackToPlay.AudioUrl); WaveOut = new WaveOutEvent(); WaveOut.Init(MediaReader); if (mute) { WaveOut.Volume = 0; } else { WaveOut.Volume = volume; } WaveOut.Play(); } else { audioUrlUnaccessible = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }