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 }