예제 #1
0
        public void Play(string Filename)
        {
            if (InvokeRequired)
            {
                Invoke(new PlayDelegate(Play), Filename);
            }
            else
            {
                _filename = Filename;
                m_media   = m_factory.CreateMedia <IMedia>(Filename);
                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.Play();
                _needsSize = true;

                string[]  parts = Filename.Split('\\');
                string    fn    = parts[parts.Length - 1];
                FilesFile ff    =
                    ((MainForm)Owner).GetCameraWindow(ObjectID).FileList.FirstOrDefault(p => p.Filename.EndsWith(fn));
                if (ff != null)
                {
                    vNav.Render(ff);
                }
            }
        }
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
     if (ofd.ShowDialog() == true)
     {
         isFromEvent = true;
         System.Windows.Forms.Application.DoEvents();
         filenamef = ofd.FileName;
         m_media   = m_factory.CreateMedia <IMediaFromFile>(filenamef);
         Thread t = new Thread(() =>
         {
             if (m_player.CurrentMedia != null)
             {
                 m_player.CurrentMedia.Dispose();
             }
             //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);
             //System.Windows.Forms.Application.DoEvents();
             m_player.Open(m_media);
             //System.Windows.Forms.Application.DoEvents();
             m_media.Parse(true);
             //System.Windows.Forms.Application.DoEvents();
             m_player.Play();
         });
         t.Start();
         //isFromEvent = false;
     }
 }
예제 #3
0
 /// <summary>
 /// Play.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonPlay_Click(object sender, EventArgs e)
 {
     if (_player != null)
     {
         _disk.Play();
         EnabledOnPlayControls(true);
     }
 }
예제 #4
0
        void vNav_Seek(object sender, float percent)
        {
            if (!_mPlayer.IsPlaying)
            {
                if (_mPlayer.PlayerWillPlay)
                {
                    _mPlayer.Play();
                }
                else
                {
                    Play(_filename, Text);
                }
            }

            _mPlayer.Position = percent / 100;
        }
        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);
            }
        }
예제 #6
0
        private void button3_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox1.Text))
            {
                m_media = m_factory.CreateMedia <IMedia>(textBox1.Text);
                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.Play();
            }
            else
            {
                errorProvider1.SetError(textBox1, "Please select media path first !");
            }
        }
예제 #7
0
        public void Play()
        {
            if (IsPlaying)
            {
                return;
            }

            IsPlaying = true;
            mPlayer.Play();
        }
예제 #8
0
        public bool Start(string videoSrcUrl)
        {
            if (_bIsInitial)
            {
                return(true);
            }

            _bIsInitial = true;
            try
            {
                if (_vlcmedia != null)
                {
                    _vlcmedia.Events.StateChanged    -= Events_StateChanged;
                    _vlcmedia.Events.DurationChanged -= Events_DurationChanged;
                    _vlcmedia.Dispose();
                }
                _vlcmedia = Vlcfactory.CreateMedia <IMedia>(videoSrcUrl);
                _vlcmedia.Events.StateChanged    += Events_StateChanged;
                _vlcmedia.Events.DurationChanged += Events_DurationChanged;
                // 自定义显示
                _memRender = _vlcplayer.CustomRenderer;
                _memRender.SetFormat(new BitmapFormat(704, 576, ChromaType.RV24));
                _memRender.SetCallback(delegate(Bitmap frame)
                {
                    if ((frame != null) && (ReceiveFrameEvent != null))
                    {
                        if (_videoPlayState)
                        {
                            long currentDateTime = _currentTime;

                            Image imgd             = (Bitmap)frame.Clone();
                            FaceDetectInfo facedet = new FaceDetectInfo(imgd, currentDateTime);

                            //ReceiveFrameEvent(facedet);
                            Task.Factory.StartNew(() => ReceiveFrameEvent(facedet));
                        }
                        frame.Dispose();
                        frame = null;
                    }
                });

                _vlcplayer.Open(_vlcmedia);
                _vlcplayer.Play();
                _videoPlayState = true;

                return(true);
            }
            catch (Exception ex)
            {
                Log4NetHelper.Instance.Error("启动视频播放Capture方法出现错误:" + ex.Message);
                return(false);
            }
        }
예제 #9
0
        private void Player_PlayControl_Button_Click(object sender, EventArgs e)
        {
            switch (((Button)sender).Text)
            {
            case "暫停播放":
                m_player.Pause();
                ((Button)sender).Text = "繼續播放";
                break;

            case "繼續播放":
                m_player.Play();
                ((Button)sender).Text = "暫停播放";
                break;
            }
        }
예제 #10
0
        public Subframe(JsonObject paramSchedule)
        {
            InitializeComponent();

            JsonObjectCollection col = (JsonObjectCollection)paramSchedule;
            frameInfoStrc frameInfo = new frameInfoStrc();

            frameInfo.xPos = int.Parse(col["xPos"].GetValue().ToString());
            frameInfo.yPos = int.Parse(col["yPos"].GetValue().ToString());
            frameInfo.width = int.Parse(col["width"].GetValue().ToString());
            frameInfo.height = int.Parse(col["height"].GetValue().ToString());
            frameInfo.contentsFileName = (string)col["fileName"].GetValue();
            frameInfo.mute = bool.Parse(col["mute"].GetValue().ToString());

            if (frameInfo.width == 0)
            {
                this.WindowState = FormWindowState.Maximized;
            }
            else
            {
                this.Width = frameInfo.width;
                this.Height = frameInfo.height;

            }
            this.Location = new System.Drawing.Point(frameInfo.xPos, frameInfo.yPos);

            # region ==== Create Player ====
            m_factory = new MediaPlayerFactory(true);
            m_player = m_factory.CreatePlayer<IDiskPlayer>();
            m_player.AspectRatio = AspectRatioMode.Default;
            m_player.Mute = frameInfo.mute;

            m_player.WindowHandle = this.pnlPlayerBack.Handle;

            UISync.Init(this);
            #endregion ======================

            #region ==== Contents play ====
            FileInfo contentsFileInfo = new FileInfo(@frameInfo.contentsFileName);
            m_media = m_factory.CreateMedia<IMediaFromFile>(contentsFileInfo.FullName);

            m_player.Open(m_media);
            m_media.Parse(true);

            m_player.Play();
            #endregion =====================
        }
예제 #11
0
        public PlayerForm(Form ParentForm, List <string> PlayerSongInfoList)
        {
            InitializeComponent();

            this.Owner         = ParentForm;
            SongId             = PlayerSongInfoList[0];
            SongLang           = PlayerSongInfoList[1];
            SongSinger         = PlayerSongInfoList[2];
            SongSongName       = PlayerSongInfoList[3];
            SongTrack          = PlayerSongInfoList[4];
            SongFilePath       = PlayerSongInfoList[5];
            dvRowIndex         = PlayerSongInfoList[6];
            UpdateDataGridView = PlayerSongInfoList[7];

            this.Text = "【" + SongLang + "】" + SongSinger + " - " + SongSongName;

            m_factory             = new MediaPlayerFactory(true);
            m_player              = m_factory.CreatePlayer <IDiskPlayer>();
            m_player.WindowHandle = Player_Panel.Handle;

            Player_ProgressTrackBar.ProgressBarValue = 0;
            Player_ProgressTrackBar.TrackBarValue    = 0;

            m_media = m_factory.CreateMedia <IMediaFromFile>(SongFilePath);
            m_player.Open(m_media);
            m_media.Parse(true);
            m_player.Mute = true;
            m_player.Play();

            Thread.Sleep(1000);

            bool WaitTrackInfo = false;

            while (!WaitTrackInfo)
            {
                if (m_player.AudioTrackCount > 1)
                {
                    foreach (Declarations.TrackDescription TrackDesc in m_player.AudioTracksInfo)
                    {
                        if (TrackDesc.Id != -1)
                        {
                            WaitTrackInfo = true;
                        }
                    }
                }
            }

            List <int> TrackIdList = new List <int>();

            foreach (Declarations.TrackDescription TrackDesc in m_player.AudioTracksInfo)
            {
                TrackIdList.Add(TrackDesc.Id);
            }

            if (TrackIdList.Count > 2)
            {
                switch (SongTrack)
                {
                case "1":
                    if (m_player.AudioTrack != TrackIdList[1])
                    {
                        m_player.AudioTrack = TrackIdList[1];
                    }
                    break;

                case "2":
                    if (m_player.AudioTrack != TrackIdList[2])
                    {
                        m_player.AudioTrack = TrackIdList[2];
                    }
                    break;
                }
                Player_CurrentChannelValue_Label.Text = (TrackIdList.IndexOf(m_player.AudioTrack) == Convert.ToInt32(SongTrack)) ? "伴唱" : "人聲";
            }
            else
            {
                string ChannelValue = "";
                switch (SongTrack)
                {
                case "1":
                    if (m_player.Channel != AudioChannelType.Left)
                    {
                        m_player.Channel = AudioChannelType.Left;
                    }
                    ChannelValue = "1";
                    break;

                case "2":
                    if (m_player.Channel != AudioChannelType.Right)
                    {
                        m_player.Channel = AudioChannelType.Right;
                    }
                    ChannelValue = "2";
                    break;
                }
                Player_CurrentChannelValue_Label.Text = (ChannelValue == SongTrack) ? "伴唱" : "人聲";
            }

            m_player.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);

            m_player.Position = 0;
            m_player.Mute     = false;

            timer.Tick    += new EventHandler(timer_Tick);
            timer.Interval = 500;
            timer.Start();
        }
예제 #12
0
        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();
            }
        }