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(); }
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(); }
/// <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); }
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); }
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(); }
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; } }
/** * 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(); }
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(); }
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); }
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(); } }
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; } }
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; }
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(); }
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")); } }
/// <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); } }
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); }
private void ConstructPlayer(string outputString) { IMediaPlayerFactory factory = new MediaPlayerFactory(); IMedia media = factory.CreateMedia<IMedia>("screen://", outputString); player = factory.CreatePlayer<IPlayer>(); player.Open(media); }
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(); }
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(); }
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(); } }
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); } }
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")); } }
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; } }
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" }); }