public void Play(string RTSPstr) { try { _rtsp_str = RTSPstr; if (isInit == false) { Init_nVLC(); isInit = true; } DisposeMedia(); m_media = m_factory.CreateMedia <IMedia>(RTSPstr); m_media.Events.DurationChanged += new EventHandler <MediaDurationChange>(Events_DurationChanged); m_media.Events.StateChanged += new EventHandler <MediaStateChange>(Events_StateChanged); m_media.Events.ParsedChanged += new EventHandler <MediaParseChange>(Events_ParsedChanged); m_player.Open(m_media); m_media.Parse(true); m_player.Stop(); m_player.Play(); CheckConnectionTimer.Start(); } catch (Exception Err) { throw new Exception("Play Faile, Error: " + Err.StackTrace); } }
/// <summary> /// Closes the media player and releases all resources. /// </summary> public void CloseMedia() { if (_player != null) { // Close the media player. _disk.Stop(); _disk.Dispose(); _player.Dispose(); _media.Dispose(); } _player = null; _disk = null; _media = null; }
public void Stop() { if (mMedia == null) { return; } IsPlaying = false; mPlayer.Stop(); mMedia.Dispose(); }
private void PlayerForm_FormClosing(object sender, FormClosingEventArgs e) { Task.Factory.StartNew(() => m_player.Stop()); timer.Dispose(); this.Owner.Show(); }
private void button4_Click(object sender, EventArgs e) { _mPlayer.Stop(); }
private void media_action() { DataTable ds1 = new DataTable(); ds1 = DAL.Stream.FindCameras(); List <myObject> url_list = (from row in ds1.AsEnumerable() select new myObject { // add url here and to the database so it can be used with the PTZ stream = row.Field <string>("stream"), panel = row.Field <int>("panel"), parameters = row.Field <string>("parameters"), cam_url = row.Field <string>("cam_url") }).ToList(); string switchExpression = m_action.Text; switch (switchExpression) { case "record": m_player1.Stop(); m_player2.Stop(); m_player3.Stop(); m_player4.Stop(); string[] filename = new string[url_list.Count]; string[] output = new string[url_list.Count]; for (int i = 0; i < url_list.Count; i++) { filename[i] = String.Format("{0:yyyy-MM-dd-hh-mm-ss}_Camera" + (i + 1), DateTime.Now, Name); if (i < (url_list.Count - 1)) { // output[i] = @":sout=#duplicate{dst=file{dst=C:\Users\user1\Desktop\video\" + filename[i] + ".asf},dst=display} --udp-caching=750 --tcp-caching=750 --realrtsp-caching=750"; // --control netsync --netsync-master-ip 192.168.1.100 output[i] = @":sout=#duplicate{dst=file{dst=C:\Users\user1\Desktop\video\" + filename[i] + ".asf},dst=display} --control netsync --netsync-master-ip 192.168.1.100"; } else { // output[i] = @":sout=#duplicate{dst=file{dst=C:\Users\user1\Desktop\video\" + filename[i] + ".asf},dst=display} --udp-caching=750 --tcp-caching=750 --realrtsp-caching=750"; // --control netsync --netsync-master output[i] = @":sout=#duplicate{dst=file{dst=C:\Users\user1\Desktop\video\" + filename[i] + ".asf},dst=display} --control netsync --netsync-master"; } } /* * for (int i = 0; i < url_list.Count; i++) * { * filename[i] = String.Format("{0:yyyy-MM-dd-hh-mm-ss}_Camera" + (i + 1), DateTime.Now, Name); * * output[i] = @":sout=#duplicate{dst=file{dst=C:\Users\user1\Desktop\video\" + filename[i] + ".asf},dst=display} --udp-caching=750 --tcp-caching=750 --realrtsp-caching=750"; // --control netsync --netsync-master * * } */ for (int i = 0; i < url_list.Count; i++) { filename[i] = String.Format("{0:yyyy-MM-dd-hh-mm-ss}_Camera" + (i + 1), DateTime.Now, Name); output[i] = @":sout=#duplicate{dst=file{dst=C:\Users\user1\Desktop\video\" + filename[i] + ".asf},dst=display}"; } m_factory = new IMediaPlayerFactory[url_list.Count]; for (int i = 0; i < url_list.Count; i++) { m_factory[i] = new MediaPlayerFactory(true); m_media[i] = m_factory[i].CreateMedia <IMedia>(url_list[i].stream, output[i]); } break; case "view": /* * string[] output1 = new string[url_list.Count]; * * for (int i = 0; i < url_list.Count; i++) * { * output1[i] = @":sout=#display"; * } * * m_factory = new IMediaPlayerFactory[url_list.Count]; * * for (int i = 0; i < url_list.Count; i++) { * m_factory[i] = new MediaPlayerFactory(true); * m_media[i] = m_factory[i].CreateMedia<IMedia>(url_list[i].stream, output1[i]); * } */ string[] output1 = new string[url_list.Count]; for (int i = 0; i < url_list.Count; i++) { /* if (i < 1) * { * // output1[i] = @":sout=#display --rt-priority --use-stream-immediate"; * // --control netsync --netsync-master * output1[i] = @":sout=#display --rt-offset=-2000"; * } * if (i > 2) * { * * // output1[i] = @":sout=#display --rt-offset=-2000 --stream-filter timeshift"; * //--control netsync --netsync-master-ip 192.164.1.60 * output1[i] = @":sout=#display --rt-priority --use-stream-immediate"; * } * else * { * output1[i] = @":sout=#display"; // --control netsync --netsync-master-ip 192.164.1.60 * } */ } m_factory = new IMediaPlayerFactory[url_list.Count]; for (int i = 0; i < url_list.Count; i++) { m_factory[i] = new MediaPlayerFactory(true); m_media[i] = m_factory[i].CreateMedia <IMedia>(url_list[i].stream, output1[i]); } break; case "playback": //these are attempts to use video sync string output2 = @":sout=#display --control netsync --netsync-master-ip 192.164.1.60"; // string output3 = @":sout=#display --control netsync --netsync-master"; // // string output2 = @":sout=#display"; string common; string commonfilename; int place; int place2; // Begin building the common filename so that I can select all videos in a group. place2 = textBox1.Text.IndexOf(".asf"); place = textBox1.Text.LastIndexOf('\\'); common = textBox1.Text.Substring(0, (place)); commonfilename = textBox1.Text.Substring((place + 1), ((place2 - 2) - place)); string[] dirs = Directory.GetFiles(common); int t = 0; // m_factory = new IMediaPlayerFactory[4]; /* * foreach (string dir in dirs) * { * if (dir.Contains(commonfilename)) //contains(commonfilename) = true; * { // get rid of the url_list that came from copying this. Change it to an array of strings * * m_factory[t] = new MediaPlayerFactory(true); * if (t <= 2) * { * m_filemedia[t] = m_factory[t].CreateMedia<IMediaFromFile>(dir, output2); * } * else * { * m_filemedia[t] = m_factory[t].CreateMedia<IMediaFromFile>(dir, output3); * } * * t++; * } * * } */ foreach (string dir in dirs) { if (dir.Contains(commonfilename)) //contains(commonfilename) = true; { // get rid of the url_list that came from copying this. Change it to an array of strings m_factory[t] = new MediaPlayerFactory(true); if (t < 1) { m_filemedia[t] = m_factory[t].CreateMedia <IMediaFromFile>(dir, output2); } else { m_filemedia[t] = m_factory[t].CreateMedia <IMediaFromFile>(dir, output3); } t++; } } /* * foreach (string dir in dirs) * { * if (dir.Contains(commonfilename)) //contains(commonfilename) = true; * { // get rid of the url_list that came from copying this. Change it to an array of strings * * m_factory[t] = new MediaPlayerFactory(true); * * m_filemedia[t] = m_factory[t].CreateMedia<IMediaFromFile>(dir, output2); * * t++; * } * * } */ break; } if ((m_action.Text == "record") | (m_action.Text == "view")) { m_player1.Open(m_media[0]); m_player2.Open(m_media[1]); m_player3.Open(m_media[2]); m_player4.Open(m_media[3]); //m_player4.Pause(); //System.Threading.Thread.Sleep(1500); /* Add code here to get rid of these lists... * for (int i = 0; i < url_list.Count; i++) * { * * } */ m_media[0].Parse(true); m_media[1].Parse(true); m_media[2].Parse(true); m_media[3].Parse(true); m_player1.Play(); m_player2.Play(); m_player3.Play(); m_player4.Play(); m_player1.Pause(); //button2.PerformClick(); /* Doesn't work. Streams will pause for a second and then continue. * m_player1.Pause(); * m_player2.Pause(); * m_player3.Pause(); * m_player4.Pause(); */ // System.Threading.Thread.Sleep(1000); /* * DateTime Tthen = DateTime.Now; * do * { * Application.DoEvents(); * } while (Tthen.AddSeconds(3) > DateTime.Now); */ // m_player1.Play(); } else { //temporarily commenting out m_player5.Open(m_filemedia[0]); // if m_player6 not empty? m_player6.Open(m_filemedia[1]); m_player7.Open(m_filemedia[2]); m_player8.Open(m_filemedia[3]); /* Add code here to get rid of these lists... * for (int i = 0; i < url_list.Count; i++) * { * * } */ m_filemedia[0].Parse(true); m_filemedia[1].Parse(true); m_filemedia[2].Parse(true); m_filemedia[3].Parse(true); m_player5.Play(); m_player6.Play(); m_player7.Play(); m_player8.Play(); } }
private void Button_Click_3(object sender, RoutedEventArgs e) { m_player.Stop(); }