Exemple #1
0
        public void Initialize()
        {
            VlcContext.LibVlcDllsPath = getVlcLibPath();
            //VlcContext.LibVlcDllsPath = @"C:\Program Files (x86)\VideoLAN\VLC";
            VlcContext.LibVlcPluginsPath = getVlcPluginsPath();
            //VlcContext.LibVlcPluginsPath = @"C:\Program Files (x86)\VideoLAN\VLC\plugins";

            var loggingEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["LoggingEnabled"]);
            VlcContext.StartupOptions.IgnoreConfig = true;
            VlcContext.StartupOptions.LogOptions.LogInFile = loggingEnabled;
            VlcContext.StartupOptions.LogOptions.ShowLoggerConsole = loggingEnabled;
            VlcContext.StartupOptions.LogOptions.Verbosity = loggingEnabled ? VlcLogVerbosities.Debug : VlcLogVerbosities.None;

            _vlcInstancePtr = VlcContext.Initialize();

            _libPlayer = VlcContext.InteropManager.MediaPlayerInterops;
            _libMedia = VlcContext.InteropManager.MediaInterops;
            _libEvents = VlcContext.InteropManager.EventInterops;

            var funcNewPlayerInst = _libPlayer.NewInstance;
            _vlcPlayerPtr = funcNewPlayerInst.Invoke(_vlcInstancePtr);

            _vlcEventManagerPtr = _libPlayer.EventManagerNewIntance.Invoke( _vlcPlayerPtr );
            _eventCallbackDelegate = new EventCallbackDelegate(this.OnVlcEvent);
            _libEvents.Attach.Invoke(_vlcEventManagerPtr, EventTypes.MediaPlayerPlaying, _eventCallbackDelegate, IntPtr.Zero);
            _libEvents.Attach.Invoke(_vlcEventManagerPtr, EventTypes.MediaPlayerStopped, _eventCallbackDelegate, IntPtr.Zero);
        }
        private void InitVlcLib(string libVlcDllsDirectory)
        {
            if (!Directory.Exists(libVlcDllsDirectory))
            {
                throw new DirectoryNotFoundException(string.Format("The directory : {0} not found.", libVlcDllsDirectory));
            }

            string libVlcFilePath = Path.Combine(libVlcDllsDirectory, "libvlc.dll");

            if (!File.Exists(libVlcFilePath))
            {
                throw new FileNotFoundException("Libvlc library not found in directory.");
            }
            string libVlcCoreFilePath = Path.Combine(libVlcDllsDirectory, "libvlccore.dll");

            if (!File.Exists(libVlcCoreFilePath))
            {
                throw new FileNotFoundException("Libvlccore library not found in directory.");
            }

            myLibVlcCoreDllHandle = Win32Interop.LoadLibrary(libVlcCoreFilePath);
            if (myLibVlcCoreDllHandle == IntPtr.Zero)
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
            myLibVlcDllHandle = Win32Interop.LoadLibrary(libVlcFilePath);
            if (myLibVlcDllHandle == IntPtr.Zero)
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }

            GetVersion = new LibVlcFunction <GetVersion>(myLibVlcDllHandle);

            var reg   = new Regex("^[0-9.]*");
            var match = reg.Match(GetVersion.Invoke());

            VlcVersion = new Version(match.Groups[0].Value);

            NewInstance     = new LibVlcFunction <NewInstance>(myLibVlcDllHandle, VlcVersion);
            ReleaseInstance = new LibVlcFunction <ReleaseInstance>(myLibVlcDllHandle, VlcVersion);
            RetainInstance  = new LibVlcFunction <RetainInstance>(myLibVlcDllHandle, VlcVersion);
            AddInterface    = new LibVlcFunction <AddInterface>(myLibVlcDllHandle, VlcVersion);
            SetExitCallback = new LibVlcFunction <SetExitCallback>(myLibVlcDllHandle, VlcVersion);
            Wait            = new LibVlcFunction <Wait>(myLibVlcDllHandle, VlcVersion);
            SetUserAgent    = new LibVlcFunction <SetUserAgent>(myLibVlcDllHandle, VlcVersion);
            GetCompiler     = new LibVlcFunction <GetCompiler>(myLibVlcDllHandle, VlcVersion);
            GetChangeSet    = new LibVlcFunction <GetChangeSet>(myLibVlcDllHandle, VlcVersion);
            FreeMemory      = new LibVlcFunction <FreeMemory>(myLibVlcDllHandle, VlcVersion);
            //GetModuleDescriptionList = new LibVlcFunction<GetModuleDescriptionList>(myLibVlcDllHandle, VlcVersion);
            //ReleaseModule = new LibVlcFunction<ReleaseModuleDescription>(myLibVlcDllHandle, VlcVersion);

            EventInterops         = new LibVlcAsynchronousEvents(myLibVlcDllHandle, VlcVersion);
            MediaPlayerInterops   = new LibVlcMediaPlayer(myLibVlcDllHandle, VlcVersion);
            MediaInterops         = new LibVlcMedia(myLibVlcDllHandle, VlcVersion);
            MediaListInterops     = new LibVlcMediaList(myLibVlcDllHandle, VlcVersion);
            AudioInterops         = new LibVlcAudio(myLibVlcDllHandle, VlcVersion);
            VideoInterops         = new LibVlcVideo(myLibVlcDllHandle, VlcVersion);
            LoggingInterops       = new LibVlcLogging(myLibVlcDllHandle, VlcVersion);
            ErrorHandlingInterops = new LibVlcErrorHandling(myLibVlcDllHandle, VlcVersion);
        }
        private void InitVlcLib(string libVlcDllsDirectory)
        {
            if (!Directory.Exists(libVlcDllsDirectory))
                throw new DirectoryNotFoundException(string.Format("The directory : {0} not found.", libVlcDllsDirectory));

            string libVlcFilePath = Path.Combine(libVlcDllsDirectory, "libvlc.dll");
            if (!File.Exists(libVlcFilePath))
                throw new FileNotFoundException("Libvlc library not found in directory.");
            string libVlcCoreFilePath = Path.Combine(libVlcDllsDirectory, "libvlccore.dll");
            if (!File.Exists(libVlcCoreFilePath))
                throw new FileNotFoundException("Libvlccore library not found in directory.");

            myLibVlcCoreDllHandle = Win32Interop.LoadLibrary(libVlcCoreFilePath);
            if (myLibVlcCoreDllHandle == IntPtr.Zero)
                throw new Win32Exception(Marshal.GetLastWin32Error());
            myLibVlcDllHandle = Win32Interop.LoadLibrary(libVlcFilePath);
            if (myLibVlcDllHandle == IntPtr.Zero)
                throw new Win32Exception(Marshal.GetLastWin32Error());

            GetVersion = new LibVlcFunction<GetVersion>(myLibVlcDllHandle);

            var reg = new Regex("^[0-9.]*");
            var match = reg.Match(IntPtrExtensions.ToStringAnsi(GetVersion.Invoke()));
            VlcVersion = new Version(match.Groups[0].Value);

            NewInstance = new LibVlcFunction<NewInstance>(myLibVlcDllHandle, VlcVersion);
            ReleaseInstance = new LibVlcFunction<ReleaseInstance>(myLibVlcDllHandle, VlcVersion);
            RetainInstance = new LibVlcFunction<RetainInstance>(myLibVlcDllHandle, VlcVersion);
            AddInterface = new LibVlcFunction<AddInterface>(myLibVlcDllHandle, VlcVersion);
            SetExitCallback = new LibVlcFunction<SetExitCallback>(myLibVlcDllHandle, VlcVersion);
            Wait = new LibVlcFunction<Wait>(myLibVlcDllHandle, VlcVersion);
            SetUserAgent = new LibVlcFunction<SetUserAgent>(myLibVlcDllHandle, VlcVersion);
            GetCompiler = new LibVlcFunction<GetCompiler>(myLibVlcDllHandle, VlcVersion);
            GetChangeSet = new LibVlcFunction<GetChangeSet>(myLibVlcDllHandle, VlcVersion);
            FreeMemory = new LibVlcFunction<FreeMemory>(myLibVlcDllHandle, VlcVersion);
            //GetModuleDescriptionList = new LibVlcFunction<GetModuleDescriptionList>(myLibVlcDllHandle, VlcVersion);
            //ReleaseModule = new LibVlcFunction<ReleaseModuleDescription>(myLibVlcDllHandle, VlcVersion);

            EventInterops = new LibVlcAsynchronousEvents(myLibVlcDllHandle, VlcVersion);
            MediaPlayerInterops = new LibVlcMediaPlayer(myLibVlcDllHandle, VlcVersion);
            MediaInterops = new LibVlcMedia(myLibVlcDllHandle, VlcVersion);
            MediaListInterops = new LibVlcMediaList(myLibVlcDllHandle, VlcVersion);
            AudioInterops = new LibVlcAudio(myLibVlcDllHandle, VlcVersion);
            VideoInterops = new LibVlcVideo(myLibVlcDllHandle, VlcVersion);
            LoggingInterops = new LibVlcLogging(myLibVlcDllHandle, VlcVersion);
            ErrorHandlingInterops = new LibVlcErrorHandling(myLibVlcDllHandle, VlcVersion);
            MediaListPlayerInterops = new LibVlcMediaListPlayer(myLibVlcDllHandle, VlcVersion);
        }