private void AcqForm_FormClosed(object sender, FormClosedEventArgs e) { // TODO: fixed media-related operations cause null reference try { _player.Stop(); _player.Dispose(); } catch { } try { _media.Dispose(); } catch { } }
private void RecordingForm_FormClosed(object sender, FormClosedEventArgs e) { if (_ffmpeg != null) { _ffmpeg.StandardInput.WriteLine("q"); _ffmpeg.WaitForExit(5000); if (!_ffmpeg.HasExited) { try { _ffmpeg.Kill(); } catch { } } _ffmpeg.Dispose(); _ffmpeg = null; if (_player.IsPlaying) { MessageBox.Show("文件已成功保存为:" + myController.CommonDataPool.VideoPath + '\\' + _start.ToString("yyyyMMddHHmmss")); } } _player.Stop(); _player.Dispose(); _media.Dispose(); }
private void DisposePlayer() { if (_mFactory == null) { return; } try { _mPlayer.Dispose(); } catch { } try { _mFactory.Dispose(); } catch { } try { _mMedia.Dispose(); } catch { } _mPlayer = null; _mFactory = null; _mMedia = null; }
public void Dispose() { try { _player.Dispose(); } catch (Exception ex) { Logging.Write(ex); } }
protected virtual void Dispose(bool disposing) { if (!disposing) { return; } DisposeMedia(); _factory.Dispose(); _player.Dispose(); }
private static void SafeDisposePlayer(IVideoPlayer player) { if (player != null) { player.Stop(); player.WindowHandle = IntPtr.Zero; player.Dispose(); player = null; } }
public MediaListPlayer(IntPtr hMediaLib, IMediaList mediaList) { m_mediaList = mediaList; m_hMediaListPlayer = LibVlcMethods.libvlc_media_list_player_new(hMediaLib); LibVlcMethods.libvlc_media_list_player_set_media_list(m_hMediaListPlayer, ((INativePointer)m_mediaList).Pointer); m_mediaList.Dispose(); m_videoPlayer = new VideoPlayer(hMediaLib); LibVlcMethods.libvlc_media_list_player_set_media_player(m_hMediaListPlayer, ((INativePointer)m_videoPlayer).Pointer); m_videoPlayer.Dispose(); }
protected override void OnClosing(CancelEventArgs e) { ThreadPool.QueueUserWorkItem(delegate { m_sourcePlayer.Stop(); m_renderPlayer.Stop(); m_inputMedia.Dispose(); m_renderPlayer.Dispose(); m_sourcePlayer.Dispose(); }); base.OnClosing(e); }
/// <summary> /// Disposes of object resources. /// </summary> /// <param name="disposeManagedResources">If true, managed resources should be /// disposed of in addition to unmanaged resources.</param> protected virtual void Dispose(bool disposeManagedResources) { if (disposeManagedResources) { m_factory.Dispose(); m_player.Dispose(); m_equalizer.Dispose(); m_media.Dispose(); m_media_preview.Dispose(); m_memRender.Dispose(); m_media_list.Dispose(); m_list_player.Dispose(); m_media_list_preview.Dispose(); m_list_preview_player.Dispose(); } }
public void GetDuration(string filePath) { IMedia media = m_factory.CreateMedia <IMediaFromFile>(filePath); IVideoPlayer player = m_factory.CreatePlayer <IVideoPlayer>(); m_memRender = player.CustomRenderer; m_memRender.SetFormat(new BitmapFormat(1, 1, ChromaType.RV24)); media.Events.DurationChanged += new EventHandler <MediaDurationChange>(Events_GetTimeDuration); media.Parse(true); player.Play(); player.Stop(); Thread.Sleep(100); player.Dispose(); m_memRender.Dispose(); media.Dispose(); }
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; } }
private void RecordingForm_FormClosed(object sender, FormClosedEventArgs e) { if (_ffmpeg != null) { _ffmpeg.StandardInput.WriteLine("q"); _ffmpeg.WaitForExit(5000); if (!_ffmpeg.HasExited) { try { _ffmpeg.Kill(); } catch { } } _ffmpeg.Dispose(); _ffmpeg = null; } _player.Stop(); _player.Dispose(); _media.Dispose(); }
private void WorkerThread() { bool file = false; try { if (File.Exists(_source)) { file = true; } } catch { } if (_mFactory == null) { var args = new List <string> { "-I", "dumy", "--ignore-config", "--no-osd", "--disable-screensaver", "--plugin-path=./plugins" }; if (file) { args.Add("--file-caching=3000"); } try { var l2 = args.ToList(); l2.AddRange(_arguments); l2 = l2.Distinct().ToList(); _mFactory = new MediaPlayerFactory(l2.ToArray()); } catch (Exception ex) { MainForm.LogExceptionToFile(ex); MainForm.LogMessageToFile("VLC arguments are: " + String.Join(",", args.ToArray())); MainForm.LogMessageToFile("Using default VLC configuration."); _mFactory = new MediaPlayerFactory(args.ToArray()); } GC.KeepAlive(_mFactory); } if (file) { _mMedia = _mFactory.CreateMedia <IMediaFromFile>(_source); } else { _mMedia = _mFactory.CreateMedia <IMedia>(_source); } _mMedia.Events.DurationChanged += EventsDurationChanged; _mMedia.Events.StateChanged += EventsStateChanged; if (_mPlayer != null) { try { _mPlayer.Dispose(); } catch { } _mPlayer = null; } _mPlayer = _mFactory.CreatePlayer <IVideoPlayer>(); _mPlayer.Events.TimeChanged += EventsTimeChanged; var fc = new Func <SoundFormat, SoundFormat>(SoundFormatCallback); _mPlayer.CustomAudioRenderer.SetFormatCallback(fc); var ac = new AudioCallbacks { SoundCallback = SoundCallback }; _mPlayer.CustomAudioRenderer.SetCallbacks(ac); _mPlayer.CustomAudioRenderer.SetExceptionHandler(Handler); _mPlayer.CustomRenderer.SetCallback(FrameCallback); _mPlayer.CustomRenderer.SetExceptionHandler(Handler); GC.KeepAlive(_mPlayer); _needsSetup = true; _stopping = false; _mPlayer.CustomRenderer.SetFormat(new BitmapFormat(FormatWidth, FormatHeight, ChromaType.RV24)); _mPlayer.Open(_mMedia); _mMedia.Parse(true); _mPlayer.Delay = 0; _framesReceived = 0; Duration = Time = 0; LastFrame = DateTime.MinValue; //check if file source (isseekable in _mPlayer is not reliable) Seekable = false; try { var p = Path.GetFullPath(_mMedia.Input); Seekable = !String.IsNullOrEmpty(p); } catch (Exception) { Seekable = false; } _mPlayer.WindowHandle = IntPtr.Zero; _mPlayer.Play(); _stopEvent.WaitOne(); if (!Seekable && !_stopRequested) { if (PlayingFinished != null) { PlayingFinished(this, ReasonToFinishPlaying.DeviceLost); } if (AudioFinished != null) { AudioFinished(this, ReasonToFinishPlaying.DeviceLost); } } else { if (PlayingFinished != null) { PlayingFinished(this, ReasonToFinishPlaying.StoppedByUser); } if (AudioFinished != null) { AudioFinished(this, ReasonToFinishPlaying.StoppedByUser); } } DisposePlayer(); }
protected override void Dispose(bool disposing) { m_videoPlayer.Dispose(); LibVlcMethods.libvlc_media_list_player_release(m_hMediaListPlayer); }
private void WorkerThread() { bool file = false; try { if (File.Exists(Source)) { file = true; } } catch { // ignored } if (_mFactory == null) { var args = new List <string> { "-I", "dumy", "--ignore-config", "--no-osd", "--disable-screensaver", "--plugin-path=./plugins" }; if (file) { args.Add("--file-caching=3000"); } try { var l2 = args.ToList(); l2.AddRange(_arguments); l2 = l2.Distinct().ToList(); _mFactory = new MediaPlayerFactory(l2.ToArray()); } catch (Exception ex) { Logger.LogException(ex, "VLC Stream"); Logger.LogMessage("VLC arguments are: " + string.Join(",", args.ToArray()), "VLC Stream"); Logger.LogMessage("Using default VLC configuration.", "VLC Stream"); _mFactory = new MediaPlayerFactory(args.ToArray()); } GC.KeepAlive(_mFactory); } var vss = Source; if (!_modeAudio) { vss = Tokenise(vss); } _mMedia = file ? _mFactory.CreateMedia <IMediaFromFile>(vss) : _mFactory.CreateMedia <IMedia>(vss); _mMedia.Events.DurationChanged += EventsDurationChanged; _mMedia.Events.StateChanged += EventsStateChanged; if (_mPlayer != null) { try { _mPlayer?.Dispose(); } catch { // ignored } _mPlayer = null; } _mPlayer = _mFactory.CreatePlayer <IVideoPlayer>(); _mPlayer.Events.TimeChanged += EventsTimeChanged; var fc = new Func <SoundFormat, SoundFormat>(SoundFormatCallback); _mPlayer.CustomAudioRenderer.SetFormatCallback(fc); var ac = new AudioCallbacks { SoundCallback = SoundCallback }; _mPlayer.CustomAudioRenderer.SetCallbacks(ac); _mPlayer.CustomAudioRenderer.SetExceptionHandler(Handler); if (!_modeAudio) { _mPlayer.CustomRenderer.SetCallback(FrameCallback); _mPlayer.CustomRenderer.SetExceptionHandler(Handler); } GC.KeepAlive(_mPlayer); _needsSetup = true; _mPlayer.CustomRenderer.SetFormat(new BitmapFormat(_source.settings.vlcWidth, _source.settings.vlcHeight, ChromaType.RV24)); _mPlayer.Open(_mMedia); _mMedia.Parse(true); _mPlayer.Delay = 0; Duration = Time = 0; LastFrame = DateTime.MinValue; //check if file source (isseekable in _mPlayer is not reliable) Seekable = false; try { var p = Path.GetFullPath(_mMedia.Input); Seekable = !string.IsNullOrEmpty(p); } catch (Exception) { Seekable = false; } _mPlayer.WindowHandle = IntPtr.Zero; _videoQueue = new ConcurrentQueue <Bitmap>(); _audioQueue = new ConcurrentQueue <byte[]>(); _mPlayer.Play(); _abort = new ManualResetEvent(false); EventManager(); if (Seekable) { PlayingFinished?.Invoke(this, new PlayingFinishedEventArgs(ReasonToFinishPlaying.StoppedByUser)); AudioFinished?.Invoke(this, new PlayingFinishedEventArgs(ReasonToFinishPlaying.StoppedByUser)); } else { PlayingFinished?.Invoke(this, new PlayingFinishedEventArgs(_res)); AudioFinished?.Invoke(this, new PlayingFinishedEventArgs(_res)); } DisposePlayer(); _abort.Close(); }