C# MediaPlayer

  1 using System.Windows.Media;
  2 using Newtonsoft.Json;
  3 using System.ComponentModel;
  4 
  5 namespace ConsoleApp378
  6 {
  7     class Program:INotifyPropertyChanged
  8     {
  9         static void Main(string[] args)
 10         {
 11             Program obj = new Program();
 12             obj.MediaPlayerDemo();
 13             Console.ReadLine(); 
 14         }
 15 
 16         static MediaPlayer mp3Player = new MediaPlayer();
 17         void MediaPlayerDemo()
 18         {
 19             string mp3Path = Directory.GetCurrentDirectory() + @"\MediaResource\StarSky.mp3";
 20             mp3Player.Open(new Uri(mp3Path));
 21             mp3Player.MediaEnded += Mp3Player_MediaEnded;
 22             Console.WriteLine(" Start:Y;Exit:Q;Amplify:A;Decrease:D;Pause:P;C:Acclerate;R:Replay from begining!");
 23             string line;
 24             while ((line = Console.ReadLine()) != null)
 25             {
 26                 ControlMediaPlayer(line[0]);
 27             }
 28         }
 29 
 30         private bool isMP3PlayerCompleted = false;
 31 
 32         public event PropertyChangedEventHandler PropertyChanged;
 33         private void OnPropertyChanged(string propName)
 34         {
 35             if(PropertyChanged!=null)
 36             {
 37                 PropertyChanged(this, new PropertyChangedEventArgs(propName));
 38             }
 39         }
 40 
 41         public bool ISMP3PlayerCompleted
 42         {
 43             get
 44             {
 45                 return isMP3PlayerCompleted;
 46             }
 47             set
 48             {
 49                 if(value!=isMP3PlayerCompleted)
 50                 {
 51                     isMP3PlayerCompleted = value;
 52                     OnPropertyChanged("ISMP3PlayerCompleted");
 53                 }
 54 
 55                 if(isMP3PlayerCompleted)
 56                 {
 57                     MessageBox.Show("Finished!");
 58                 }
 59             }
 60         }
 61         private  void Mp3Player_MediaEnded(object sender, EventArgs e)
 62         {
 63             ISMP3PlayerCompleted = true;
 64         }
 65 
 66         void ControlMediaPlayer(char c)
 67         {
 68             if (mp3Player != null && mp3Player.HasAudio)
 69             {
 70                 string jsonContent = ""; 
 71                 switch (c)
 72                 {
 73                     //Start
 74                     case 'Y':
 75                         mp3Player.Play();
 76                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
 77                         ShowMsg(jsonContent);
 78                         break;
 79 
 80                     //Exit
 81                     case 'Q':
 82                         mp3Player.Stop();
 83                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
 84                         ShowMsg(jsonContent);
 85                         break;
 86 
 87                     //Amplify 
 88                     case 'A':
 89                         mp3Player.Volume = mp3Player.Volume + 0.1;
 90                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
 91                         ShowMsg(jsonContent);
 92                         break;
 93 
 94                     //Decrease
 95                     case 'D':
 96                         mp3Player.Volume = mp3Player.Volume - 0.1;
 97                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
 98                         ShowMsg(jsonContent);
 99                         break;
100 
101                     //Pause
102                     case 'P':
103                         mp3Player.Pause();
104                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
105                         ShowMsg(jsonContent);
106                         break;
107 
108                     //Accelerate
109                     case 'C':
110                         mp3Player.SpeedRatio += 0.3;
111                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
112                         ShowMsg(jsonContent);
113                         break;
114 
115                     case 'L':
116                         mp3Player.SpeedRatio -= 0.3;
117                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
118                         ShowMsg(jsonContent);
119                         break;
120 
121                     //Replay
122                     case 'R':
123                         mp3Player.Position = default(TimeSpan);
124                         mp3Player.Play();
125                         jsonContent = JsonConvert.SerializeObject(mp3Player, Formatting.Indented);
126                         ShowMsg(jsonContent);
127                         break;
128                 }
129             }
130         }
131 
132         void ShowMsg(string msg)
133         {
134             Console.WriteLine(msg);
135         }
136         void ShowStatus(MediaPlayer mPlayer)
137         {
138             if(mPlayer!=null)
139             {
140                 string msg = $"Position:{mp3Player.Position},SpeedRatio:{mp3Player.SpeedRatio},IsMuted:{mp3Player.IsMuted}," +
141                     $"ScrubbingEnabled:{mp3Player.ScrubbingEnabled},Balance:{mp3Player.Balance},NaturalVideoWidth:{mp3Player.NaturalVideoWidth}"
142                     + $"Source:{mp3Player.Source}";
143                 Console.WriteLine(msg);
144             }
145         }
146 }

 

上一篇:前端 IoC 理念


下一篇:prototype || 原型链方法 及javaScript 方法三种分类