Beispiel #1
0
        void PlayPreviewFile(string FileName)
        {
            try
            {
                _player.Stop();
                _player.Dispose();
            }
            catch { }
            try
            {
                _media.Dispose();
            }
            catch { }

            IMediaPlayerFactory factory = new MediaPlayerFactory();

            _media  = factory.CreateMedia <IMediaFromFile>(FileName);
            _player = factory.CreatePlayer <IVideoPlayer>();
            _player.WindowHandle = picturePreview.Handle;
            _player.AspectRatio  = AspectRatioMode.Mode2; // fill?
            _player.Open(_media);
            _player.Events.MediaEnded    += new EventHandler(OnMediaEnded);
            _player.Events.PlayerStopped += new EventHandler(OnPlayerStopped);
            _player.Play();
        }
Beispiel #2
0
        private void btnPreview_Click(object sender, EventArgs e)
        {
            var selItems = lvVideoFiles.SelectedIndices;

            if (selItems == null)
            {
                return;
            }
            int sel = selItems[0];

            _player.Stop();
            _media.Dispose();

            VideoFileInfo       vfi     = _videoFiles[sel];
            IMediaPlayerFactory factory = new MediaPlayerFactory();

            _media  = factory.CreateMedia <IMediaFromFile>(vfi.FileFullName);
            _player = factory.CreatePlayer <IVideoPlayer>();
            _player.WindowHandle = picturePreview.Handle;
            _player.AspectRatio  = AspectRatioMode.Mode2;
            _player.Open(_media);
            _player.Events.MediaEnded    += new EventHandler(OnMediaEnded);
            _player.Events.PlayerStopped += new EventHandler(OnPlayerStopped);
            _player.Play();
        }
Beispiel #3
0
        /// <summary>
        /// 截取视频缩略图
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="imgFile"></param>
        /// <returns></returns>
        public static bool CatchImg(string fileName, string imgFile)
        {
            const string ffmpeg = "ffmpeg.exe";
            //string flvImg = imgFile + ".jpg";
            string flvImgSize = "640*480";
            MediaPlayerFactory m_factory = new MediaPlayerFactory();
            IVideoPlayer m_player = m_factory.CreatePlayer<IVideoPlayer>();
            IMediaFromFile m_media = m_factory.CreateMedia<IMediaFromFile>(fileName);
            m_player.Open(m_media);
            m_media.Parse(true);

            System.Drawing.Size size = m_player.GetVideoSize(0);
            if (!size.IsEmpty)
                flvImgSize = size.Width.ToString() + "*" + size.Height.ToString();
            //m_player.TakeSnapShot(1, @"C:");
            System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            ImgstartInfo.Arguments = "   -i   " + fileName + "  -y  -f  image2   -ss 2 -vframes 1  -s   " + flvImgSize +
                                     "   " + imgFile;
            try
            {
                System.Diagnostics.Process.Start(ImgstartInfo);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
            return true;
        }
 /**
  * Construct a media player component.
  */
 public AudioMediaPlayerComponent()
 {
     mediaPlayerFactory = OnGetMediaPlayerFactory();
     mediaPlayer        = mediaPlayerFactory.NewHeadlessMediaPlayer();
     // Sub-class initialisation
     OnAfterConstruct();
     // Register listeners
     mediaPlayer.AddMediaPlayerEventListener(this);
 }
Beispiel #5
0
        private void button7_Click(object sender, EventArgs e)
        {
            run = true;
            Thread t = new Thread(() =>
            {
                int thisCount = countSave++;
                if (!string.IsNullOrEmpty(textBox1.Text))
                {
                    var factory = new MediaPlayerFactory();
                    var player  = factory.CreatePlayer <IDiskPlayer>();

                    player.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
                    player.Events.TimeChanged           += new EventHandler <MediaPlayerTimeChanged>(Events_TimeChanged);
                    player.Events.MediaEnded            += new EventHandler(Events_MediaEnded);
                    player.Events.PlayerStopped         += new EventHandler(Events_PlayerStopped);


                    trackBar2.Value = player.Volume;

                    // string output = ":sout=file:abc.mp4";

                    // string output = ":sout=#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=abc.mp4}";//,dst=display}
                    // string output1 = ":demux=dump :demuxdump-file=output.mp4";

                    while (run)
                    {
                        try
                        {
                            string fileName = "data\\" + thisCount + "-" + DateTime.Now.ToLongTimeString();
                            string output   = ":sout=#transcode{demux=dump}:duplicate{dst=file{dst=" + fileName + ".mp4},dst=rtp{sdp=rtsp://:42624/test},dst=http{mux=ffmpeg{mux=flv},dst=:48684/}}";//,dst=display} dst=rtp{sdp=rtsp://:8554/},dst=http{mux=ffmpeg{mux=flv},dst=:8080/}

                            var media = m_factory.CreateMedia <IMedia>(textBox1.Text, output);
                            media.Events.DurationChanged += new EventHandler <MediaDurationChange>(Events_DurationChanged);
                            media.Events.StateChanged    += new EventHandler <MediaStateChange>(Events_StateChanged);
                            media.Events.ParsedChanged   += new EventHandler <MediaParseChange>(Events_ParsedChanged);

                            player.Open(media);
                            media.Parse(true);

                            player.Play();

                            Thread.Sleep(60000);
                            player.Stop();
                        }
                        catch { }
                    }
                }
                else
                {
                    errorProvider1.SetError(textBox1, "Please select media path first !");
                }
            });

            t.Start();
        }
        /// <summary>Initializes the connection to the videofeed.</summary>
        /// <param name="vPlayer">Reference to the videoplayer in the Presentation frame to play the videofeed.</param>
        public void GetVideoFeed(ref IVideoPlayer vPlayer)
        {
            var options = new string[]                                                          // Create options for the videoplayer
            {
                "--network-caching=150",                                                        // Define value for network caching
            };

            vPlayer = new MediaPlayerFactory(options, true).CreatePlayer <IVideoPlayer>();       // creates a new videoplayer with the specific options

            videoFeed.Connect(logic.selectedUnit.vfIpAddress, ref vPlayer);
        }
Beispiel #7
0
        private void RecordingForm_Load(object sender, EventArgs e)
        {
            IMediaPlayerFactory factory = new MediaPlayerFactory();

            //_media = factory.CreateMedia<IMedia>("rtsp://*****:*****@" + DefaultConfig.CameraIP + ":554/cam/realmonitor?channel=1&subtype=1", DefaultConfig.PlayerOptions);
            //xcg
            _media              = factory.CreateMedia <IMedia>("rtsp://*****:*****@" + cameraIP + ":554/cam/realmonitor?channel=1&subtype=1", DefaultConfig.PlayerOptions);
            _player             = factory.CreatePlayer <IVideoPlayer>();
            _player.AspectRatio = AspectRatioMode.Mode2;
            _player.Open(_media);
            _player.Play();
        }
Beispiel #8
0
        private void VideoForm_Load_1(object sender, EventArgs e)
        {
            //文字浮动
            toolTip1.SetToolTip(btn_play, "播放");
            toolTip1.SetToolTip(btn_pause, "暂停");
            toolTip1.SetToolTip(btn_close, "隐藏");
            m_ptCanvas = this.pictureBox_Video.Location;
            if (playBack.nfi == null)
            {
                Close();
                return;
            }

            IMediaPlayerFactory factory = new MediaPlayerFactory();

            //创建播放器
            PlayerVideo = factory.CreatePlayer <IVideoPlayer>();

            //窗口句柄(在picture_Box上播放视频)
            PlayerVideo.WindowHandle = pictureBox_Video.Handle;

            //宽高比(4:3,16:9等等)
            PlayerVideo.AspectRatio = AspectRatioMode.Mode2;
            if (playBack.nfi.HasVideo)
            {
                //获得media视频文件
                Media = factory.CreateMedia <IMediaFromFile>(playBack.nfi.VideoFullName);

                //打开该文件
                PlayerVideo.Open(Media);
                PlayerVideo.PlaybackRate = playBack.Speed;
                PlayerVideo.Play();
//                PlayerVideo.Time = (long)(playBack.nfi.VideoOffset * 1000 + playBack.CurrentSeconds * 1000 + playBack.chartWave.ChartAreas[0].AxisX.StripLines[0].IntervalOffset * 1000+playBack.GetDvalue*1000);
                getOffsetTime();
            }
            //获得picturebox的X,Y值,宽,高
            x      = this.pictureBox_Video.Location.X;
            y      = this.pictureBox_Video.Location.Y;
            width  = this.pictureBox_Video.Width;
            height = this.pictureBox_Video.Height;
            if (playBack.Player.IsPlaying)
            {
                btn_pause.Enabled = true;
                btn_play.Enabled  = false;
            }
            else
            {
                btn_pause.Enabled = false;
                btn_play.Enabled  = true;
            }
        }
Beispiel #9
0
        /**
         * Construct a media list player component.
         */
        public AudioMediaListPlayerComponent()
        {
            // Create the native resources
            MediaPlayerFactory mediaPlayerFactory = GetMediaPlayerFactory();

            mediaListPlayer = mediaPlayerFactory.NewMediaListPlayer();
            mediaList       = mediaPlayerFactory.NewMediaList();
            mediaListPlayer.SetMediaList(mediaList);
            mediaListPlayer.SetMediaPlayer(GetMediaPlayer());
            // Register listeners
            mediaListPlayer.AddMediaListPlayerEventListener(this);
            // Sub-class initialisation
            OnAfterConstruct();
        }
        public DeviceViewModel(IDispatcher dispatcher, IFileSystem fileSystem, MediaPlayerFactory mediaPlayerFactory, IHOTASDevice device)
        {
            _appDispatcher      = dispatcher;
            _fileSystem         = fileSystem;
            _mediaPlayerFactory = mediaPlayerFactory;
            _hotasDevice        = device;
            InstanceId          = _hotasDevice.DeviceId;
            Name = _hotasDevice.Name;
            _hotasDevice.LostConnectionToDevice += _hotasDevice_LostConnectionToDevice;
            _hotasDevice.AxisChanged            += _hotasDevice_AxisChanged;

            ButtonMap = new ObservableCollection <IBaseMapViewModel>();
            RebuildMap();
        }
Beispiel #11
0
        public void PlayVideo(string url)
        {
            IMediaPlayerFactory factory = new MediaPlayerFactory();
            //:network-caching=300 :rtsp-caching=300
            IMedia media = factory.CreateMedia <IMedia>(url);
            //  IMedia media = factory.CreateMedia<IMedia>(url, new string[] { "network-caching=1000", "rtsp-caching=1000" });

            IVideoPlayer player = factory.CreatePlayer <IVideoPlayer>();

            player.WindowHandle = panel1.Handle;
            player.Open(media);
            player.Events.MediaEnded  += Events_MediaEnded;
            player.Events.TimeChanged += Events_TimeChanged;
            //       player.AspectRatio = AspectRatioMode.Default;
            player.Play();
        }
Beispiel #12
0
 public void Player_Setup(string sciezka)
 {
     factory = new MediaPlayerFactory(true);
     player  = factory.CreatePlayer <IDiskPlayer>();
     player.Events.PlayerPositionChanged += new EventHandler <MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
     player.Events.TimeChanged           += new EventHandler <MediaPlayerTimeChanged>(Events_TimeChanged);
     player.Events.MediaEnded            += new EventHandler(Events_MediaEnded);
     player.Events.PlayerStopped         += new EventHandler(Events_PlayerStopped);
     player.WindowHandle = PresentPanel.Handle;
     UISync.Init(this);
     med = factory.CreateMedia <IMediaFromFile>(sciezka);
     med.Events.DurationChanged += new EventHandler <MediaDurationChange>(Events_DurationChanged);
     med.Events.StateChanged    += new EventHandler <MediaStateChange>(Events_StateChanged);
     med.Events.ParsedChanged   += new EventHandler <MediaParseChange>(Events_ParsedChanged);
     player.Open(med);
     //  med.Parse(true);
 }
Beispiel #13
0
        private void PlaybackForm_Load(object sender, EventArgs e)
        {
            if (_nfi == null)
            {
                Close();
                return;
            }

            chartWave.Series.Clear();
            foreach (int idx in Enumerable.Range(0, 20))
            {
                Series ser = new Series();
                ser.ChartType       = SeriesChartType.FastLine;
                ser.BorderDashStyle = ChartDashStyle.Solid;
                //ser.Color = Color.Black;
                chartWave.Series.Add(ser);
            }
            chartWave.ChartAreas[0].AxisX.Maximum = WINDOW_SECONDS;
            //hsProgress.
            if (_nfi != null)
            {
                LoadData(0);
                ShowData();
            }

            IMediaPlayerFactory factory = new MediaPlayerFactory();

            _player = factory.CreatePlayer <IVideoPlayer>();
            _player.WindowHandle = panelVideo.Handle;
            //     _player.WindowHandle=pictureBox1.Handle;
            _player.AspectRatio = AspectRatioMode.Mode2; // fill?

            if (_nfi.HasVideo)
            {
                _media = factory.CreateMedia <IMediaFromFile>(_nfi.VideoFullName);
                _player.Open(_media);
                Debug.WriteLine(_player.IsSeekable);
                Debug.WriteLine(_player.Length);
                _player.Time = (long)_nfi.VideoOffset * 1000;
                //_player.Play();
                _player.Pause();
            }
        }
Beispiel #14
0
 private void StopPlayer()
 {
     if (_player != null)
     {
         _player.Stop();
         _player.Dispose();
         _player = null;
     }
     if (_media != null)
     {
         _media.Dispose();
         _media = null;
     }
     if (_factory != null)
     {
         _factory.Dispose();
         _factory = null;
     }
 }
Beispiel #15
0
        public void Start(int index, string name, string url)
        {
            Index = index;
            Name  = name;

            IMediaPlayerFactory factory = new MediaPlayerFactory();
            IMedia media = factory.CreateMedia <IMedia>(url);

            m_player = factory.CreatePlayer <IVideoPlayer>();
            m_player.WindowHandle = this.Handle;

            memRender = m_player.CustomRenderer;
            memRender.SetFormat(new BitmapFormat(Width, Height, ChromaType.RV16));

            m_player.AspectRatio = Aspect_Ratio;
            m_player.Open(media);
            m_player.Play();
            timer1.Enabled = true;
        }
Beispiel #16
0
        public void Start(int index, string name, string url)
        {
            IMediaPlayerFactory factory = new MediaPlayerFactory();
            IMedia media = factory.CreateMedia <IMedia>(url);

            m_player = factory.CreatePlayer <IVideoPlayer>();
            m_player.WindowHandle = Handle;

            //IMemoryRenderer memRender = m_player.CustomRenderer;
            //memRender.SetCallback(delegate (Bitmap frame)
            //{
            //    // NewFrameEvent?.Invoke(frame, index, name);
            //    Console.WriteLine(frame.Size);
            //});

            //memRender.SetFormat(new BitmapFormat(704, 576, ChromaType.RV24));
            m_player.AspectRatio = Aspect_Ratio;
            m_player.Open(media);
            m_player.Play();
        }
Beispiel #17
0
        private void TestVLC()
        {
            StopPlayer();
            try
            {
                _factory = new MediaPlayerFactory();
                _player  = _factory.CreatePlayer <IVideoPlayer>();

                _player.Open(_media);
                _player.Mute = true;
                _player.Events.PlayerPositionChanged  += EventsPlayerPositionChanged;
                _player.Events.PlayerEncounteredError += EventsPlayerEncounteredError;
                _player.CustomRenderer.SetCallback(bmp => bmp.Dispose());
                _player.CustomRenderer.SetFormat(new BitmapFormat(100, 100, ChromaType.RV24));

                _player.Play();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, LocRm.GetString("Error"));
            }
        }
Beispiel #18
0
        /// <summary>
        /// initVLClib
        /// </summary>
        void initVLClib()
        {
            try
            {
                p                       = new System.Windows.Forms.Panel();
                p.BackColor             = System.Drawing.Color.Black;
                windowsFormsHost1.Child = p;

                m_factory = new MediaPlayerFactory(true);
                m_player  = m_factory.CreatePlayer <IVideoPlayer>();

                this.DataContext = m_player;

                //m_player.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
                //m_player.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
                //m_player.Events.MediaEnded += new EventHandler(Events_MediaEnded);
                //m_player.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);

                m_player.WindowHandle = p.Handle;
            }
            catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Ошибка библиотеки vlc " + ex.Message); }
        }
Beispiel #19
0
        public PlayerWindow(IMediaFileIterator files, PlayerOptions options)
        {
            mOptions       = options;
            mFiles         = files;
            mFilesIterator = mFiles.GetEnumerator();
            InitializeComponent();

            var playerPath = Application.StartupPath;

            mPlayerFactory    = new MediaPlayerFactory(playerPath);
            mPlayer           = mPlayerFactory.CreatePlayer <IDiskPlayer>();
            mPlayerController = new PlayerController(mPlayer, mPlayerFactory);

            mPlayer.Events.MediaEnded    += new EventHandler(Events_MediaEnded);
            mPlayer.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);
            mPlayer.Events.PlayerPaused  += new EventHandler(Events_PlayerPaused);
            mPlayer.Events.PlayerPlaying += new EventHandler(Events_PlayerPlaying);

            mPlayer.WindowHandle    = Handle;
            mPlayer.KeyInputEnabled = false;

            KeyDown += new KeyEventHandler(playerWindow_KeyDown);
        }
Beispiel #20
0
        private void ConstructPlayer(string outputString)
        {
            IMediaPlayerFactory factory = new MediaPlayerFactory();

            IMedia media = factory.CreateMedia<IMedia>("screen://", outputString);
            player = factory.CreatePlayer<IPlayer>();
            player.Open(media);
        }
Beispiel #21
0
        private void button7_Click(object sender, EventArgs e)
        {
            run = true;
            Thread t = new Thread(() =>
            {

                int thisCount = countSave++;
                if (!string.IsNullOrEmpty(textBox1.Text))
                {
                    var factory = new MediaPlayerFactory();
                    var player = factory.CreatePlayer<IDiskPlayer>();

                    player.Events.PlayerPositionChanged += new EventHandler<MediaPlayerPositionChanged>(Events_PlayerPositionChanged);
                    player.Events.TimeChanged += new EventHandler<MediaPlayerTimeChanged>(Events_TimeChanged);
                    player.Events.MediaEnded += new EventHandler(Events_MediaEnded);
                    player.Events.PlayerStopped += new EventHandler(Events_PlayerStopped);

                    trackBar2.Value = player.Volume;

                    // string output = ":sout=file:abc.mp4";

                    // string output = ":sout=#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=abc.mp4}";//,dst=display}
                    // string output1 = ":demux=dump :demuxdump-file=output.mp4";

                    while (run)
                    {
                        try
                        {
                            string fileName = "data\\" + thisCount + "-" + DateTime.Now.ToLongTimeString();
                            string output = ":sout=#transcode{demux=dump}:duplicate{dst=file{dst=" + fileName + ".mp4},dst=rtp{sdp=rtsp://:42624/test},dst=http{mux=ffmpeg{mux=flv},dst=:48684/}}";//,dst=display} dst=rtp{sdp=rtsp://:8554/},dst=http{mux=ffmpeg{mux=flv},dst=:8080/}

                            var media = m_factory.CreateMedia<IMedia>(textBox1.Text, output);
                            media.Events.DurationChanged += new EventHandler<MediaDurationChange>(Events_DurationChanged);
                            media.Events.StateChanged += new EventHandler<MediaStateChange>(Events_StateChanged);
                            media.Events.ParsedChanged += new EventHandler<MediaParseChange>(Events_ParsedChanged);

                            player.Open(media);
                            media.Parse(true);

                            player.Play();

                            Thread.Sleep(60000);
                            player.Stop();
                        }
                        catch { }
                    }
                }
                else
                {
                    errorProvider1.SetError(textBox1, "Please select media path first !");
                }

            });

            t.Start();
        }
Beispiel #22
0
        public static void vlcSave(string localPath, string rootPath)
        {
            //Thread t = new Thread(() =>
            //{
            if (!Directory.Exists(rootPath + "\\data1"))
            {
                Directory.CreateDirectory(rootPath + "\\data1");//dst=http{mux=ffmpeg{mux=flv},dst=:8080/}
            }
                if (!Directory.Exists(localPath + "\\data2"))
                {
                    Directory.CreateDirectory(localPath + "\\data2");//dst=http{mux=ffmpeg{mux=flv},dst=:8080/}
                }
                File.WriteAllText(rootPath + "ff", "");

                //string output = ":sout=file:" + localPath + "abc.mp4";

                // string output = ":sout=#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=abc.mp4}";//,dst=display}
                // string output = ":demux=dump :demuxdump-file=output.mp4";
                try
                {
                    File.WriteAllText(rootPath + "b1", "");

                    var factory = new MediaPlayerFactory();
                    File.WriteAllText(rootPath + "b2", "");

                    var player = factory.CreatePlayer<IDiskPlayer>();

                    File.WriteAllText(rootPath + "b3", "");

                    string fileName = localPath + "abc";
                    //string fileName = localPath + DateTime.Now.ToLongTimeString();
                    //string fileName = localPath + "\\" + DateTime.Now.ToLongTimeString();
                    //string fileName =  DateTime.Now.ToLongTimeString();
                    //string output = ":sout=#transcode{demux=dump}:duplicate{dst=file{dst=" + fileName + ".mp4},dst=rtp{sdp=rtsp://:8554/}}";
                    //string output = ":sout=#transcode{demux=dump,channels=1}:duplicate{dst=file{dst=" + fileName + ".mp4},dst=rtp{sdp=rtsp://:8554/}}";
                    //string output = ":sout=#transcode{demux=dump,channels=1}:duplicate{dst=file{dst=" + fileName + ".mp4},dst=rtp{sdp=rtsp://:8554/}}";
                    string output = ":sout=#transcode{demux=dump,channels=1}:duplicate{dst=file{dst=" + fileName + ".mp4}}";

                    var media = factory.CreateMedia<IMedia>(rootPath + "_5_19_01.mp4", output);
                    //rtsp://178.218.212.102:1935/live/Stream2
                    //delay 15~25 sec
                    //have 4 streams 0:A 1:V 2:A 3:V
                    //channnels=0: rec->Audio stream->Audio
                    //channnels=1: rec->Audio+Video stream->Audio+Video
                    //channnels=4: rec->Audio stream->Audio+Video

                    player.Open(media);
                    media.Parse(true);

                    player.Play();

                    Thread.Sleep(50000);
                    player.Stop();
                    File.WriteAllText("fin", "");
                }
                catch (Exception ex){
                    File.WriteAllText(rootPath + "ex" + ex.Message, "");
                }
            //});

            //t.Start();
        }
Beispiel #23
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();
            }
        }
Beispiel #24
0
        internal void VideoInit(bool allowResize)
        {
            SessionInfo.Playing = false;

            if (_mFactory == null)
            {
                _mFactory = new MediaPlayerFactory(GetVlcOptions(),
                                                   SessionInfo.VlcDir, SessionInfo.Logger, true);
            }

            ToggleRunningMedia(false);

            //form.isOn = false;

            /*
             * if (vlc == null)
             * {
             *  _vlcTop = form.panelVlc.Location;
             *  _vlcSize = form.panelVlc.Size;
             * }*/

            // pentru fullscreen on/off, allowResize ::--> async
            if (allowResize)
            {
                if (SessionInfo.FullScreen)
                {
                    _form.panelVlc.Dock   = DockStyle.Fill;
                    _form.WindowState     = FormWindowState.Maximized;
                    _form.FormBorderStyle = FormBorderStyle.None;
                    _form.TopMost         = true;
                    //FullScreenApi.SetWinFullScreen(_form.Handle);
                }

                /*
                 * else
                 *  if (SessionInfo.FullVideo)
                 * {
                 *  _vlcTop = _form.panelVlc.Location;
                 *  _vlcSize = _form.panelVlc.Size;
                 *  _form.panelVlc.Location = new Point(0, 0);
                 *  _form.panelVlc.Size = new Size(_form.Width, _form.Height);
                 *  _form.panelVlc.Dock = DockStyle.Fill;
                 *  //_form.panelVlc.BringToFront();
                 * }
                 * else
                 * {
                 *  _form.panelVlc.Location = _vlcTop;
                 *  _form.panelVlc.Size = _vlcSize;
                 *  _form.panelVlc.Dock = DockStyle.None;
                 *  //form.panelVlc.SendToBack();
                 * }
                 */
            }


            _logTimeLast = DateTime.MinValue; // pt mesajul de start connection

            ToggleRunningMedia(true);

            _info.Cam.Data.ViewSettings.AspectRatioDefault = Declarations.AspectRatioMode.Default;
            _form.btnRatio.Text = _info.Cam.Data.ViewSettings.AspectRatioMode.ToString();

            //UISync.Execute(() => m_player.WindowHandle = form.panelVlc.Handle);
            //(new System.Threading.Thread(delegate () {
            // openMedia("rtsp://*****:*****@10.10.10.202:554/cam/realmonitor?channel=1&subtype=0");
            //})).Start();

            //(new System.Threading.Thread(delegate () { vlc.Parent = form.panelVlc; })).Start();

            //} catch (Exception e) { MessageBox.Show(e.Message); }
        }
Beispiel #25
0
        private void TestVLC()
        {
            string url = cmbVLCURL.Text.Trim();
            if (url == string.Empty)
            {
                MessageBox.Show(LocRm.GetString("Validate_SelectCamera"), LocRm.GetString("Note"));
                return;
            }

            btnGetStreamSize.Enabled = false;
            StopPlayer();
            try
            {
                _factory = new MediaPlayerFactory();
                _player = _factory.CreatePlayer<IVideoPlayer>();
                _media = _factory.CreateMedia<IMedia>(url, txtVLCArgs.Text);
                _player.Open(_media);
                _player.Mute = true;
                _player.Events.PlayerPositionChanged += EventsPlayerPositionChanged;
                _player.Events.PlayerEncounteredError += EventsPlayerEncounteredError;
                _player.CustomRenderer.SetCallback(bmp => bmp.Dispose());
                _player.CustomRenderer.SetFormat(new BitmapFormat(100, 100, ChromaType.RV24));

                _player.Play();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, LocRm.GetString("Error"));
            }
        }
Beispiel #26
0
 private void StopPlayer()
 {
     if (_player != null)
     {
         _player.Stop();
         _player.Dispose();
         _player = null;
     }
     if (_media!=null)
     {
         _media.Dispose();
         _media = null;
     }
     if (_factory != null)
     {
         _factory.Dispose();
         _factory = null;
     }
 }
Beispiel #27
0
        protected override void DoBackgroundWork()
        {
            try
            {
                frameEncodeInterval = 1000 / this.cameraSpec.vlc_transcode_fps;
                w = this.cameraSpec.h264_video_width;
                h = this.cameraSpec.h264_video_height;
                if (w <= 0 || h <= 0)
                {
                    w = h = 0;
                }

                IVideoPlayer player = null;

                while (!Exit)
                {
                    try
                    {
                        frameNumber             = 0;
                        lastFrameEncoded        = 0;
                        nextFrameEncodeTime     = 0;
                        lastTimestampUpdateTime = -1;
                        frameTimer.Start();
                        IMediaPlayerFactory factory = new MediaPlayerFactory();
                        player = factory.CreatePlayer <IVideoPlayer>();
                        player.Events.TimeChanged += new EventHandler <Declarations.Events.MediaPlayerTimeChanged>(Events_TimeChanged);
                        int      b    = cameraSpec.vlc_transcode_buffer_time;
                        string[] args = new string[] { ":rtsp-caching=" + b, ":realrtsp-caching=" + b, ":network-caching=" + b, ":udp-caching=" + b, ":volume=0", cameraSpec.wanscamCompatibilityMode ? ":demux=h264" : "", cameraSpec.wanscamCompatibilityMode ? ":h264-fps=" + cameraSpec.wanscamFps : "" };
                        string   url  = cameraSpec.imageryUrl;
                        if (cameraSpec.wanscamCompatibilityMode)
                        {
                            url = "http://127.0.0.1:" + MJpegWrapper.cfg.webport + "/" + cameraSpec.id + ".wanscamstream";
                        }
                        IMedia media = factory.CreateMedia <IMedia>(url, args);
                        memRender = player.CustomRenderer2;
                        //memRender.SetExceptionHandler(ExHandler);
                        memRender.SetCallback(delegate(Bitmap frame)
                        {
                            // We won't consume the bitmap here.  For efficiency's sake under light load, we will only encode the bitmap as jpeg when it is requested by a client.
                            frameNumber++;
                            if (!player.Mute)
                            {
                                player.ToggleMute();
                            }
                            if (frameTimer.ElapsedMilliseconds >= nextFrameEncodeTime)
                            {
                                EventWaitHandle oldWaitHandle = newFrameWaitHandle;
                                newFrameWaitHandle            = new EventWaitHandle(false, EventResetMode.ManualReset);
                                oldWaitHandle.Set();
                            }
                            //long time = frameCounter.ElapsedMilliseconds;
                            //if (time >= nextFrameEncodeTime)
                            //{
                            //    lastFrame = ImageConverter.GetJpegBytes(frame);
                            //    nextFrameEncodeTime = time + frameEncodeInterval;
                            //}
                            //latestBitmap = new Bitmap(frame);  // frame.Clone() actually doesn't copy the data and exceptions get thrown
                        });
                        memRender.SetFormat(new BitmapFormat(w, h, ChromaType.RV24));
                        //memRender.SetFormatSetupCallback(formatSetupCallback);
                        player.Open(media);
                        player.Play();
                        if (w == 0)
                        {
                            // Need to auto-detect video size.
                            while (!Exit)
                            {
                                Thread.Sleep(50);
                                Size s = player.GetVideoSize(0);
                                if (s.Width > 0 && s.Height > 0)
                                {
                                    lock (MJpegWrapper.cfg)
                                    {
                                        w = this.cameraSpec.h264_video_width = (ushort)s.Width;
                                        h = this.cameraSpec.h264_video_height = (ushort)s.Height;
                                        MJpegWrapper.cfg.Save(Globals.ConfigFilePath);
                                    }
                                    throw new Exception("Restart");
                                }
                            }
                        }
                        else
                        {
                            while (!Exit)
                            {
                                Thread.Sleep(50);
                            }
                        }
                    }
                    catch (ThreadAbortException ex)
                    {
                        throw ex;
                    }
                    catch (Exception ex)
                    {
                        if (ex.Message != "Restart")
                        {
                            Logger.Debug(ex);
                            int waitedTimes = 0;
                            while (!Exit && waitedTimes++ < 100)
                            {
                                Thread.Sleep(50);
                            }
                        }
                    }
                    finally
                    {
                        frameTimer.Stop();
                        frameTimer.Reset();
                        if (player != null)
                        {
                            player.Stop();
                        }
                        newFrameWaitHandle.Set();
                    }
                }
            }
            catch (ThreadAbortException)
            {
            }
            catch (Exception ex)
            {
                Logger.Debug(ex);
            }
            newFrameWaitHandle.Set();
        }
        /// <summary>
        /// Ensures the player.
        /// </summary>
        protected override void EnsureMediaPlayerCreated()
        {
            if (MediaPlayerFactory != null)
            {
                return;
            }

            WindowsFormsPanel = new Panel();
            WindowsFormsPanel.BackColor = Color.Black;

            App.Instance.HiddenWindow.WindowsFormsHost.Child = WindowsFormsPanel;

            MediaPlayerFactory = new MediaPlayerFactory(new[] 
             {
                "-I", 
                "dummy",  
		        "--ignore-config", 
                "--no-osd",
                "--disable-screensaver",
                //"--ffmpeg-hw",
		        "--plugin-path=./plugins"
             });
        }