/// <summary> /// Initialize VLC player with path of LibVlc and options. /// </summary> /// <param name="libVlcPath"></param> /// <param name="libVlcOption"></param> public void Initialize(String libVlcPath, params String[] libVlcOption) { if (!ApiManager.IsInitialized) { ApiManager.Initialize(libVlcPath, libVlcOption); } switch (CreateMode) { case PlayerCreateMode.NewVlcInstance: var vlc = new Vlc(libVlcOption); VlcMediaPlayer = vlc.CreateMediaPlayer(); ApiManager.Vlcs.Add(vlc); break; case PlayerCreateMode.Default: default: VlcMediaPlayer = ApiManager.DefaultVlc.CreateMediaPlayer(); break; } if (VlcMediaPlayer != null) { VlcMediaPlayer.PositionChanged += VlcMediaPlayerPositionChanged; VlcMediaPlayer.TimeChanged += VlcMediaPlayerTimeChanged; VlcMediaPlayer.Playing += VlcMediaPlayerStateChanged; VlcMediaPlayer.Paused += VlcMediaPlayerStateChanged; VlcMediaPlayer.Stoped += VlcMediaPlayerStateChanged; VlcMediaPlayer.Opening += VlcMediaPlayerStateChanged; VlcMediaPlayer.Buffering += VlcMediaPlayerStateChanged; VlcMediaPlayer.EndReached += VlcMediaPlayerStateChanged; VlcMediaPlayer.SeekableChanged += VlcMediaPlayerSeekableChanged; VlcMediaPlayer.LengthChanged += VlcMediaPlayerLengthChanged; _lockCallback = VideoLockCallback; _unlockCallback = VideoUnlockCallback; _displayCallback = VideoDisplayCallback; _formatCallback = VideoFormatCallback; _cleanupCallback = VideoCleanupCallback; //_audioSetupCallback = AudioFormatSetupCallback; //_audioCleanupCallback = AudioFormatCleanupCallback; //_audioPlayCallback = AudioPlayCallback; //_audioPauseCallback = AudioPauseCallback; //_audioResumeCallback = AudioResumeCallback; //_audioFlushCallback = AudioFlushCallback; //_audioDrainCallback = AudioDrainCallback; //_audioSetVolumeCallback = AudioSetVolumeCallback; _lockCallbackHandle = GCHandle.Alloc(_lockCallback); _unlockCallbackHandle = GCHandle.Alloc(_unlockCallback); _displayCallbackHandle = GCHandle.Alloc(_displayCallback); _formatCallbackHandle = GCHandle.Alloc(_formatCallback); _cleanupCallbackHandle = GCHandle.Alloc(_cleanupCallback); //_audioSetupCallbackHandle = GCHandle.Alloc(_audioSetupCallback); //_audioCleanupCallbackHandle = GCHandle.Alloc(_audioCleanupCallback); //_audioPlayCallbackHandle = GCHandle.Alloc(_audioPlayCallback); //_audioPauseCallbackHandle = GCHandle.Alloc(_audioPauseCallback); //_audioResumeCallbackHandle = GCHandle.Alloc(_audioResumeCallback); //_audioFlushCallbackHandle = GCHandle.Alloc(_audioFlushCallback); //_audioDrainCallbackHandle = GCHandle.Alloc(_audioDrainCallback); //_audioSetVolumeCallbackHandle = GCHandle.Alloc(_audioSetVolumeCallback); VlcMediaPlayer.SetVideoDecodeCallback(_lockCallback, _unlockCallback, _displayCallback, IntPtr.Zero); VlcMediaPlayer.SetVideoFormatCallback(_formatCallback, _cleanupCallback); //VlcMediaPlayer.SetAudioCallback(_audioPlayCallback, _audioPauseCallback, _audioResumeCallback, _audioFlushCallback, _audioDrainCallback); //VlcMediaPlayer.SetAudioFormatCallback(_audioSetupCallback, _audioCleanupCallback); //VlcMediaPlayer.SetAudioVolumeCallback(_audioSetVolumeCallback); } }
/// <summary> /// Initialize VLC player with path of LibVlc and options. /// </summary> /// <param name="libVlcPath"></param> /// <param name="libVlcOption"></param> public void Initialize(string libVlcPath, params string[] libVlcOption) { if (!ApiManager.IsInitialized) { ApiManager.Initialize(libVlcPath, libVlcOption); } if (VlcMediaPlayer != null) { throw new InvalidOperationException("VlcPlayer is been initialized."); } switch (CreateMode) { case PlayerCreateMode.NewVlcInstance: Vlc = new Vlc(libVlcOption); ApiManager.Vlcs.Add(Vlc); break; case PlayerCreateMode.Default: default: Vlc = ApiManager.DefaultVlc; break; } VlcMediaPlayer player = Vlc.CreateMediaPlayer(); _lockCallback = VideoLockCallback; _unlockCallback = VideoUnlockCallback; _displayCallback = VideoDisplayCallback; _formatCallback = VideoFormatCallback; _cleanupCallback = VideoCleanupCallback; //_audioSetupCallback = AudioFormatSetupCallback; //_audioCleanupCallback = AudioFormatCleanupCallback; //_audioPlayCallback = AudioPlayCallback; //_audioPauseCallback = AudioPauseCallback; //_audioResumeCallback = AudioResumeCallback; //_audioFlushCallback = AudioFlushCallback; //_audioDrainCallback = AudioDrainCallback; //_audioSetVolumeCallback = AudioSetVolumeCallback; _lockCallbackHandle = GCHandle.Alloc(_lockCallback); _unlockCallbackHandle = GCHandle.Alloc(_unlockCallback); _displayCallbackHandle = GCHandle.Alloc(_displayCallback); _formatCallbackHandle = GCHandle.Alloc(_formatCallback); _cleanupCallbackHandle = GCHandle.Alloc(_cleanupCallback); //_audioSetupCallbackHandle = GCHandle.Alloc(_audioSetupCallback); //_audioCleanupCallbackHandle = GCHandle.Alloc(_audioCleanupCallback); //_audioPlayCallbackHandle = GCHandle.Alloc(_audioPlayCallback); //_audioPauseCallbackHandle = GCHandle.Alloc(_audioPauseCallback); //_audioResumeCallbackHandle = GCHandle.Alloc(_audioResumeCallback); //_audioFlushCallbackHandle = GCHandle.Alloc(_audioFlushCallback); //_audioDrainCallbackHandle = GCHandle.Alloc(_audioDrainCallback); //_audioSetVolumeCallbackHandle = GCHandle.Alloc(_audioSetVolumeCallback); if (player == null) { throw new Exception("Vlc media player initialize fail."); } AttachPlayer(player); }