Difference between revisions of "Old Python bindings"

From VideoLAN Wiki
Jump to navigation Jump to search
 
Line 14: Line 14:
 
= Tips and tricks =
 
= Tips and tricks =
  
* Snapshot support : in order to get snapshot support, you have to activate the snapshot vout module through a clone video filter.  The following code gives a way to achieve this :
+
== Snapshot support ==
 +
 
 +
In order to get snapshot support, you have to activate the snapshot vout module through a clone video filter.  The following code gives a way to achieve this :
  
 
   mc=vlc.MediaControl([ "--vout-filter", "clone" ])
 
   mc=vlc.MediaControl([ "--vout-filter", "clone" ])
Line 23: Line 25:
  
 
Note that all config options could have been given on the command line, but this illustrates the use of the vlc.Object API.
 
Note that all config options could have been given on the command line, but this illustrates the use of the vlc.Object API.
 +
 +
== Win32 initialization ==
 +
 +
If the vlc module was not compiled with the exact same prefix as the VLC installation (e.g. c:\\Program Files\\Videolan), then it cannot find itself the installation directory (stored in the registry Software\VideoLAN\VLC\Path), and the MediaControl instanciation will fail with a message like "Cannot find interface plugins".
 +
 +
The workaround consists in changing directory to the VLC installation directory before instanciating the MediaControl object.
 +
 +
    def get_registry_value (self, subkey, name):
 +
        import _winreg
 +
        value = None
 +
        for hkey in _winreg.HKEY_LOCAL_MACHINE, _winreg.HKEY_CURRENT_USER:
 +
            try:
 +
                reg = _winreg.OpenKey(hkey, subkey)
 +
                value, type_id = _winreg.QueryValueEx(reg, name)
 +
                _winreg.CloseKey(reg)
 +
            except _winreg.error:
 +
                pass
 +
        return value
 +
 +
    vlcpath=get_registry_value('Software\\VideoLAN\\VLC','InstallDir')
 +
    if vlcpath is None:
 +
        print "Cannot locate VLC installation directory"
 +
    else:
 +
        os.chdir(vlcpath)
 +
        mc=vlc.MediaControl()

Revision as of 19:09, 4 December 2005

Python binding documentation

For a while, there has been a basic python binding for libvlc, that was used for streaming. A more complete (with a hopefully generic API that can be reused by other players) has been developped, based on the MediaControlAPI.

python binding (see [1] for a basic code sample)

Basics

The vlc python module provides 2 main classes : MediaControl and Object.

vlc.MediaControl is an

Tips and tricks

Snapshot support

In order to get snapshot support, you have to activate the snapshot vout module through a clone video filter. The following code gives a way to achieve this :

 mc=vlc.MediaControl([ "--vout-filter", "clone" ])
 o=VLC.Object(0)
 o.config_set("clone-vout-list", "default,snapshot")
 o.config_set("snapshot-width", 320)
 o.config_set("snapshot-height", 200)

Note that all config options could have been given on the command line, but this illustrates the use of the vlc.Object API.

Win32 initialization

If the vlc module was not compiled with the exact same prefix as the VLC installation (e.g. c:\\Program Files\\Videolan), then it cannot find itself the installation directory (stored in the registry Software\VideoLAN\VLC\Path), and the MediaControl instanciation will fail with a message like "Cannot find interface plugins".

The workaround consists in changing directory to the VLC installation directory before instanciating the MediaControl object.

   def get_registry_value (self, subkey, name):
       import _winreg
       value = None
       for hkey in _winreg.HKEY_LOCAL_MACHINE, _winreg.HKEY_CURRENT_USER:
           try:
               reg = _winreg.OpenKey(hkey, subkey)
               value, type_id = _winreg.QueryValueEx(reg, name)
               _winreg.CloseKey(reg)
           except _winreg.error:
               pass
       return value
   vlcpath=get_registry_value('Software\\VideoLAN\\VLC','InstallDir')
   if vlcpath is None:
       print "Cannot locate VLC installation directory"
   else:
       os.chdir(vlcpath)
       mc=vlc.MediaControl()