LibVLCSharp
The name of the folder that contains the per-architecture folders
The Core class handles libvlc loading intricacies on various platforms as well as
the libvlc/libvlcsharp version match check.
The Core class handles libvlc loading intricacies on various platforms as well as
the libvlc/libvlcsharp version match check.
Initializes the X threading system
Linux X11 only
non-zero on success, zero on failure
Load the native libvlc library (if necessary, depending on platform)
Ensure that you installed the VideoLAN.LibVLC.[YourPlatform] package in your target project
This will throw a if the native libvlc libraries cannot be found or loaded.
It may also throw a if the LibVLC and LibVLCSharp major versions do not match.
See https://code.videolan.org/videolan/LibVLCSharp/-/blob/master/docs/versioning.md for more info about the versioning strategy.
The path to the directory that contains libvlc and libvlccore
No need to specify unless running netstandard 1.1, or using custom location for libvlc
This parameter is NOT supported on Linux, use LD_LIBRARY_PATH instead.
Disable error dialogs in case of dll loading failures on older Windows versions.
This is mostly to fix Windows XP support (https://code.videolan.org/videolan/LibVLCSharp/issues/173),
though it may happen under other conditions (broken plugins/wrong ABI).
As libvlc may load additional plugins later in the lifecycle of the application,
we should not unset this on exiting
Dialogs can be raised by libvlc for network actions and logins.
You may only call once PostLogin or PostAction or Dismiss after which this instance will be invalid.
Post a login answer.
After this call, the instance won't be valid anymore
valid non-empty string
valid string
if true stores the credentials
Post a question answer.
After this call, this instance won't be valid anymore
QuestionCb
1 for action1, 2 for action2
return true on success, false otherwise
Dismiss a dialog.
After this call, this instance won't be valid anymore
true if properly dismissed, false otherwise
Describes the question type by libvlc
Normal question
Warning question
Critical question
Called when an error message needs to be displayed.
title of the dialog
text of the dialog
Called when a login dialog needs to be displayed.
You can interact with this dialog by calling PostLogin() to post an answer or Dismiss() to cancel this dialog.
id used to interact with the dialog
title of the dialog
text of the dialog
user name that should be set on the user form
if true, ask the user if he wants to save the credentials
Use token to cancel operation
Called when a question dialog needs to be displayed.
You can interact with this dialog by calling PostAction() to post an answer or Dismiss() to cancel this dialog.
id used to interact with the dialog
title of the dialog
text of the dialog
question type (or severity) of the dialog
text of the cancel button
text of the first button, if NULL, don't display this button
text of the second button, if NULL, don't display this button
Use token to cancel operation
Called when a progress dialog needs to be displayed.
If cancellable cancelText is not NULL, you can cancel this dialog by calling libvlc_dialog_dismiss()
id used to interact with the dialog
title of the dialog
text of the dialog
true if the progress dialog is indeterminate
initial position of the progress bar (between 0.0 and 1.0)
text of the cancel button, if NULL the dialog is not cancellable
Use token to cancel operation
Called when a progress dialog needs to be updated.
id of the dialog
position of the progress bar (between 0.0 and 1.0)
new text of the progress dialog
Equalizer settings can be applied to a media player using this type
Create a new default equalizer, with all frequency values zeroed.
The new equalizer can subsequently be applied to a media player by invoking
libvlc_media_player_set_equalizer().
version LibVLC 2.2.0 or later
Create a new equalizer, with initial frequency values copied from an existing preset.
The new equalizer can subsequently be applied to a media player by invoking
libvlc_media_player_set_equalizer().
version LibVLC 2.2.0 or later
index of the preset, counting from zero
Set a new pre-amplification value for an equalizer.
The new equalizer settings are subsequently applied to a media player by invoking
MediaPlayer::setEqualizer().
The supplied amplification value will be clamped to the -20.0 to +20.0 range.
preamp value (-20.0 to 20.0 Hz)
LibVLC 2.2.0 or later
true on success, false otherwise
Get the current pre-amplification value from an equalizer.
return preamp value (Hz)
LibVLC 2.2.0 or later
Set a new amplification value for a particular equalizer frequency band.
The new equalizer settings are subsequently applied to a media player by invoking MediaPlayer::setEqualizer().
The supplied amplification value will be clamped to the -20.0 to +20.0 range.
LibVLC 2.2.0 or later
amplification value (-20.0 to 20.0 Hz)
index, counting from zero, of the frequency band to set
Get the amplification value for a particular equalizer frequency band.
LibVLC 2.2.0 or later
index, counting from zero, of the frequency band to get
amplification value (Hz); NaN if there is no such frequency band
Get the number of equalizer presets.
LibVLC 2.2.0 or later
Get the name of a particular equalizer preset.
This name can be used, for example, to prepare a preset label or menu in a user interface.
index of the preset, counting from zero
preset name, or empty string if there is no such preset
Get the number of distinct frequency bands for an equalizer.
return number of frequency bands
LibVLC 2.2.0 or later
Get a particular equalizer band frequency.
This value can be used, for example, to create a label for an equalizer band control in a user interface.
LibVLC 2.2.0 or later
index index of the band, counting from zero
equalizer band frequency (Hz), or -1 if there is no such band
The class that manages one type of event
Increments the reference count to the event handler method.
The event type
The event handler for this event type
The MediaPlayerChanged event indicates when a new MediaPlayer has been set up with the VideoView
and is ready to use for a first time playback.
MediaPlayerChangedEventArgs constructor, used internally by LibVLCSharp
The previous mediaplayer (if any)
The new mediaplayer (if any)
The previous mediaplayer (if any)
The new mediaplayer (if any)
Internal event used by LibVLCSharp.
MediaPlayerChangingEventArgs constructor, used internally by LibVLCSharp
The previous mediaplayer (if any)
The new mediaplayer (if any)
The previous mediaplayer (if any)
The new mediaplayer (if any)
Helper method that creates a user friendly type from the internal interop structure.
AudioOutputDescriptionStructure from interop
public AudioOutputDescription to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
AudioOutputDeviceStructure from interop
public AudioOutputDevice to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
ModuleDescriptionStructure from interop
public ModuleDescription to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
TrackDescriptionStructure from interop
public TrackDescription to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
ChapterDescriptionStructure from interop
public ChapterDescription to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
MediaSlaveStructure from interop
public MediaSlave to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
TrackDescriptionStructure from interop
public TrackDescription to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
SubtitleTrackStructure from interop
public SubtitleTrack to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
MediaDiscovererDescriptionStructure from interop
public MediaDiscovererDescription to be consumed by the user
Helper method that creates a user friendly type from the internal interop structure.
RendererDescriptionStructure from interop
public RendererDescription to be consumed by the user
Helper method that marshals a UTF16 managed string to a UTF8 native string ptr
the managed string to marshal to native
a ptr to the UTF8 string that needs to be freed after use
Helper method that mashals a UTF8 native string ptr to a UTF16 managed string.
Optionally frees the native string ptr
the native string to marshal to managed
frees the native pointer of the libvlc string (use only for char*)
a managed UTF16 string
The Span-based APIs on Stream are not available on older targets. Span can be backported on older TFMs through the System.Memory package,
but System.IO does not provide the same benefit. This code is extracted from dotnet/runtime to allow efficient media callbacks implementation.
https://github.com/dotnet/runtime/blob/c4b9dabec8186a0d61f0cc3ea0b7efea579bf24e/src/libraries/System.Private.CoreLib/src/System/IO/Stream.cs#L720-L734
the .NET stream
the buffer to read
number of bytes read
Helper for libvlc_new
libvlc options, an UTF16 string array turned to UTF8 string pointer array
the create function call
the result of the create function
Thrown when libvlc could not be created
Generic marshalling function to retrieve structs from a libvlc linked list
Internal struct type
publicly facing struct type
Native libvlc call: retrieve collection start pointer from parent reference
Retrieve the internal struct by marshalling the native pointer
Create a publicly facing struct from the internal struct values
Access next element in the list
Native libvlc call: release resources allocated with the getRef call
An array of publicly facing struct types
Generic marshalling function to retrieve structs from libvlc by reading from unmanaged memory with offsets
This supports uint libvlc signatures.
Internal struct type
publicly facing struct type
native reference of the parent
Native libvlc call: retrieve collection start pointer from parent reference
Retrieve the internal struct by marshalling the native pointer
Create a publicly facing struct from the internal struct values
Native libvlc call: release the array allocated with the getRef call with the given element count
An array of publicly facing struct types
Generic marshalling function to retrieve structs from libvlc by reading from unmanaged memory with offsets
Internal struct type
publicly facing struct type
native reference of the parent
Native libvlc call: retrieve collection start pointer from parent reference
Retrieve the internal struct by marshalling the native pointer
Create a publicly facing struct from the internal struct values
Native libvlc call: release the array allocated with the getRef call with the given element count
An array of publicly facing struct types
Generic marshalling function to retrieve structs from libvlc by reading from unmanaged memory with offsets
This supports an additional enum configuration parameter.
Internal struct type
publicly facing struct type
Additional enum confugation type
native reference of the parent
Additional enum confugation type
Native libvlc call: retrieve collection start pointer from parent reference
Retrieve the internal struct by marshalling the native pointer
Create a publicly facing struct from the internal struct values
Native libvlc call: release the array allocated with the getRef call with the given element count
An array of publicly facing struct types
Turns an array of UTF16 C# strings to an array of pointer to UTF8 strings
Array of pointer you need to release when you're done with Marshal.FreeHGlobal
Marshal a pointer to a struct
Helper with netstandard1.1 and net40 support
Crossplatform dlopen
true if successful
Crossplatform fclose
true if successful
Frees an heap allocation returned by a LibVLC function.
If you know you're using the same underlying C run-time as the LibVLC
implementation, then you can call ANSI C free() directly instead.
the pointer
Performs the native call, frees the ptrs and returns the result
Performs the native call and frees the ptrs
Gets the instance represented by the given handle.
This must be a GCHandle.
The type of instance to retrieve
The handle given back by libvlc
null if it is not a valid handle, the instance otherwise
Small helper for determining the current platform
Returns true if running on Windows, false otherwise
Returns true if running on Linux, false otherwise
Returns true if running on Linux desktop, false otherwise
Returns true if running on macOS, false otherwise
Returns true if running in 64bit process, false otherwise
This base class is used for the main libvlc types
The pointer to the native code representation of this object
Release native resources by calling this C function
Indicates whether this object has already been disposed
Base constructor for most libvlc objects. Will perform native calls.
A create function that will return a pointer to the instance in native code
A release Action that takes the native pointer to that C# instance's native code representation
and performs the release call in native code. It will be called once when the C# instance gets disposed.
Dispose of this instance
Dispose of this instance
true if called from a method
Interface for video control
Occurs when the size of the control changes
Gets the width of the video view
Gets the height of the video view
VideoView Interface
MediaPlayer object connected to the view
Main LibVLC API object representing a libvlc instance in native code.
Note: You may create multiple mediaplayers from a single LibVLC instance
Determines whether two object instances are equal.
other libvlc instance to compare with
true if same instance, false otherwise
Determines whether two object instances are equal.
other libvlc instance to compare with
true if same instance, false otherwise
The real log event handlers.
The GCHandle to be passed to callbacks as userData
Returns the hashcode for this libvlc instance
Create and initialize a libvlc instance.
This functions accept a list of "command line" arguments similar to the
main(). These arguments affect the LibVLC instance default configuration.
LibVLC may create threads. Therefore, any thread-unsafe process
initialization must be performed before calling libvlc_new(). In particular
and where applicable:
- setlocale() and textdomain(),
- setenv(), unsetenv() and putenv(),
- with the X11 display system, XInitThreads()
(see also libvlc_media_player_set_xwindow()) and
- on Microsoft Windows, SetErrorMode().
- sigprocmask() shall never be invoked; pthread_sigmask() can be used.
On POSIX systems, the SIGCHLD signalmust notbe ignored, i.e. the
signal handler must set to SIG_DFL or a function pointer, not SIG_IGN.
Also while LibVLC is active, the wait() function shall not be called, and
any call to waitpid() shall use a strictly positive value for the first
parameter (i.e. the PID). Failure to follow those rules may lead to a
deadlock or a busy loop.
Also on POSIX systems, it is recommended that the SIGPIPE signal be blocked,
even if it is not, in principles, necessary, e.g.:
On Microsoft Windows Vista/2008, the process error mode
SEM_FAILCRITICALERRORS flagmustbe set before using LibVLC.
On later versions, that is optional and unnecessary.
Also on Microsoft Windows (Vista and any later version), setting the default
DLL directories to SYSTEM32 exclusively is strongly recommended for
security reasons:
Arguments are meant to be passed from the command line to LibVLC, just like
VLC media player does. The list of valid arguments depends on the LibVLC
version, the operating system and platform, and set of available LibVLC
plugins. Invalid or unsupported arguments will cause the function to fail
(i.e. return NULL). Also, some arguments may alter the behaviour or
otherwise interfere with other LibVLC functions.
There is absolutely no warranty or promise of forward, backward and
cross-platform compatibility with regards to libvlc_new() arguments.
We recommend that you do not use them, other than when debugging.
This will throw a if the native libvlc libraries cannot be found or loaded.
It may also throw a if the LibVLC and LibVLCSharp major versions do not match.
See https://code.videolan.org/videolan/LibVLCSharp/-/blob/master/docs/versioning.md for more info about the versioning strategy.
// example
using var libvlc = new LibVLC("--verbose=2");
// or
using var libvlc = new LibVLC("--verbose", "2");
list of arguments, in the form "--option=value"
the libvlc instance or NULL in case of error
Create and initialize a libvlc instance.
This functions accept a list of "command line" arguments similar to the
main(). These arguments affect the LibVLC instance default configuration.
LibVLC may create threads. Therefore, any thread-unsafe process
initialization must be performed before calling libvlc_new(). In particular
and where applicable:
- setlocale() and textdomain(),
- setenv(), unsetenv() and putenv(),
- with the X11 display system, XInitThreads()
(see also libvlc_media_player_set_xwindow()) and
- on Microsoft Windows, SetErrorMode().
- sigprocmask() shall never be invoked; pthread_sigmask() can be used.
On POSIX systems, the SIGCHLD signalmust notbe ignored, i.e. the
signal handler must set to SIG_DFL or a function pointer, not SIG_IGN.
Also while LibVLC is active, the wait() function shall not be called, and
any call to waitpid() shall use a strictly positive value for the first
parameter (i.e. the PID). Failure to follow those rules may lead to a
deadlock or a busy loop.
Also on POSIX systems, it is recommended that the SIGPIPE signal be blocked,
even if it is not, in principles, necessary, e.g.:
On Microsoft Windows Vista/2008, the process error mode
SEM_FAILCRITICALERRORS flagmustbe set before using LibVLC.
On later versions, that is optional and unnecessary.
Also on Microsoft Windows (Vista and any later version), setting the default
DLL directories to SYSTEM32 exclusively is strongly recommended for
security reasons:
Arguments are meant to be passed from the command line to LibVLC, just like
VLC media player does. The list of valid arguments depends on the LibVLC
version, the operating system and platform, and set of available LibVLC
plugins. Invalid or unsupported arguments will cause the function to fail
(i.e. return NULL). Also, some arguments may alter the behaviour or
otherwise interfere with other LibVLC functions.
There is absolutely no warranty or promise of forward, backward and
cross-platform compatibility with regards to libvlc_new() arguments.
We recommend that you do not use them, other than when debugging.
This will throw a if the native libvlc libraries cannot be found or loaded.
It may also throw a if the LibVLC and LibVLCSharp major versions do not match.
See https://code.videolan.org/videolan/LibVLCSharp/-/blob/master/docs/versioning.md for more info about the versioning strategy.
enable verbose debug logs
list of arguments (should be NULL)
Make dirty hacks to include necessary defaults on some platforms.
The options given by the user
enable debug logs
The patched options
Dispose of this libvlc instance
Determines whether 2 instances of libvlc are equals
1st instance of libvlc
2nd instance of libvlc
Determines whether 2 instances of libvlc are different
1st instance of libvlc
2nd instance of libvlc
Try to start a user interface for the libvlc instance.
interface name, or null for default
True if successful, false otherwise
Registers a callback for the LibVLC exit event. This is mostly useful if
the VLC playlist and/or at least one interface are started with
libvlc_playlist_play() or libvlc_add_intf() respectively.
Typically, this function will wake up your application main loop (from
another thread).
callback to invoke when LibVLC wants to exit,
or NULL to disable the exit handler (as by default)
This function should be called before the playlist or interface are
started. Otherwise, there is a small race condition: the exit event could
be raised before the handler is registered.
This function and libvlc_wait() cannot be used at the same time.
Sets the application name. LibVLC passes this as the user agent string
when a protocol requires it.
human-readable application name, e.g. "FooBar player 1.2.3"
HTTP User Agent, e.g. "FooBar/1.2.3 Python/2.6.0"
LibVLC 1.1.1 or later
Sets some meta-information about the application.
See also libvlc_set_user_agent().
Java-style application identifier, e.g. "com.acme.foobar"
application version numbers, e.g. "1.2.3"
application icon name, e.g. "foobar"
LibVLC 2.1.0 or later.
Close log file handle
true if no file to close or close operation successful, false otherwise
Sets up logging to a file.
Watch out: Overwrite contents if file exists!
Potentially throws a VLCException if FILE * cannot be obtained
FILE pointer opened for writing
(the FILE pointer must remain valid until libvlc_log_unset())
open/create file with Write access. If existing, resets content.
LibVLC 2.1.0 or later
The event that is triggered when a log is emitted from libVLC.
Listening to this event will discard the default logger in libvlc.
Returns a list of audio filters that are available.
a list of module descriptions. It should be freed with libvlc_module_description_list_release().
In case of an error, NULL is returned.
libvlc_module_description_t
libvlc_module_description_list_release
Returns a list of video filters that are available.
a list of module descriptions. It should be freed with libvlc_module_description_list_release().
In case of an error, NULL is returned.
libvlc_module_description_t
libvlc_module_description_list_release
Gets the list of available audio output modules.
list of available audio outputs. It must be freed with
libvlc_audio_output_list_release
libvlc_audio_output_t .
In case of error, NULL is returned.
Gets a list of audio output devices for a given audio output module,
audio output name
(as returned by libvlc_audio_output_list_get())
A NULL-terminated linked list of potential audio output devices.
It must be freed with libvlc_audio_output_device_list_release()
libvlc_audio_output_device_set().
Not all audio outputs support this. In particular, an empty (NULL)
list of devices doesnotimply that the specified audio output does
not work.
The list might not be exhaustive.
Some audio output devices in the list might not actually work in
some circumstances. By default, it is recommended to not specify any
explicit audio device.
LibVLC 2.1.0 or later.
Get media discoverer services by category
category of services to fetch
the number of media discoverer services (0 on error)
LibVLC 3.0.0 and later.
Register callbacks in order to handle VLC dialogs.
LibVLC 3.0.0 and later.
Called when an error message needs to be displayed.
Called when a login dialog needs to be displayed.
You can interact with this dialog by calling Dialog.PostLogin() to post an answer or Dialog.Dismiss() to cancel this dialog.
Called when a question dialog needs to be displayed.
You can interact with this dialog by calling Dialog.PostLogin() to post an answer or Dialog.Dismiss() to cancel this dialog.
Called when a progress dialog needs to be displayed.
Called when a progress dialog needs to be updated.
Unset dialog callbacks if previously set
True if dialog handlers are set
List of available renderers used to create RendererDiscoverer objects
Note: LibVLC 3.0.0 and later
Gets log message debug infos.
This function retrieves self-debug information about a log message:
- the name of the VLC module emitting the message,
- the name of the source code module (i.e.file) and
- the line number within the source code module.
The returned module name and file name will be NULL if unknown.
The returned line number will similarly be zero if unknown.
The log message context (as passed to the )
The module name storage.
The source code file name storage.
The source code file line number storage.
Increments the native reference counter for this libvlc instance
The version of the LibVLC engine currently used by LibVLCSharp
The changeset of the LibVLC engine currently used by LibVLCSharp
A human-readable error message for the last LibVLC error in the calling
thread. The resulting string is valid until another error occurs (at least
until the next LibVLC call).
Null if no error.
Clears the LibVLC error status for the current thread. This is optional.
By default, the error status is automatically overridden when a new error
occurs, and destroyed when the thread exits.
Retrieve the libvlc compiler version.
Example: "gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu6)"
Registers a callback for the LibVLC exit event.
This is mostly useful if the VLC playlist and/or at least one interface are started with libvlc_playlist_play()
or AddInterface() respectively. Typically, this function will wake up your application main loop (from another thread).
Logging messages level.
Future LibVLC versions may define new levels.
Debug message
Important informational message
Warning (potential error) message
Error message
Registers a callback for the LibVLC exit event.
This is mostly useful if the VLC playlist and/or at least one interface are started with libvlc_playlist_play()
or AddInterface() respectively. Typically, this function will wake up your application main loop (from another thread).
LibVLCEvent types
Useless event, it will be triggered only when calling
libvlc_media_discoverer_start()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Useless event, it will be triggered only when calling
libvlc_media_discoverer_stop()
Renderer item
This struct is passed by a
or deleted.
An item is valid until the
is called with the same pointer.
libvlc_renderer_discoverer_event_manager()
A LibVLC event
Media metadata changed
Type of the metadata that changed
Media parsed status changed
The new parsed status
Media sub item added
The newly added media subitem
The duration of the media changed
The new media duration
The media has been freed
Freed media
The state of the media changed
New media state
A media sub item tree has been added
New media sub item tree
The mediaplayer's media changed
New mediaplayer's media
The mediaplayer buffering information
Caching information
The mediaplayer's time changed
Mediaplayer's current time
The mediaplayer's position changed
Mediaplayer's current position
The mediaplayer's seekable status changed
The new seekable capability
The mediaplayer's pausable status changed
The new pausable capability
The mediaplayer's title changed
The new title
The mediaplayer's chapter changed
The new chapter
The mediaplayer had a snapshot taken
Filename of the newly taken snapshot
The mediaplayer's length changed
The new mediaplayer length
The mediaplayer's video output changed
Number of available video outputs
The mediaplayer scrambled status changed
The scrambled status
The mediaplayer has a new Elementary Stream (ES)
The Id of the new Elementary Stream (ES)
The type of the new Elementary Stream (ES)
An Elementary Stream (ES) was deleted
The Id of the deleted Elementary Stream (ES)
The type of the deleted Elementary Stream (ES)
An Elementary Stream (ES) was selected
The Id of the selected Elementary Stream (ES)
The type of the seleted Elementary Stream (ES)
The mediaplayer's audio device changed
String describing the audio device
The mediaplayer's volume changed
The new volume
Base class for MediaList events
Current node
Current index
Default constructor
Current node
Current index
An item has been added to the MediaList
An item is about to be added to the MediaList
An item has been deleted from the MediaList
An item is about to be deleted from the MediaList
A new RendererItem has been found
The newly found RendererItem
A RendererItem has been deleted
The deleted RendererItem
The LibVLC Log Event Arg
The severity of the log message.
By default, you will only get error messages, but you can get all messages by specifying "-vv" in the options.
The log message
The name of the module that emitted the message
The source file that emitted the message.
This may be if that info is not available, i.e. always if you are using a release version of VLC.
The line in the at which the message was emitted.
This may be if that info is not available, i.e. always if you are using a release version of VLC.
Helper property with already formatted log message
Media is an abstract representation of a playable media. It can be a network stream or a local video/audio file.
Media Constructs a libvlc Media instance
A libvlc instance
A path, location, or node name, depending on the 3rd parameter
The type of the 2nd argument.
the libvlc options, in the form of ":your-option"
Media Constructs a libvlc Media instance
A libvlc instance
The absolute URI of the resource.
the libvlc options, in the form of ":your-option"
Create a media for an already open file descriptor.
The file descriptor shall be open for reading(or reading and writing).
Regular file descriptors, pipe read descriptors and character device
descriptors(including TTYs) are supported on all platforms.
Block device descriptors are supported where available.
Directory descriptors are supported on systems that provide fdopendir().
Sockets are supported on all platforms where they are file descriptors,
i.e.all except Windows.
\note This library will not automatically close the file descriptor
under any circumstance.Nevertheless, a file descriptor can usually only be
rendered once in a media player.To render it a second time, the file
descriptor should probably be rewound to the beginning with lseek().
A libvlc instance
open file descriptor
the libvlc options, in the form of ":your-option"
Create a media from a media list
media list to create media from
Create a media from a MediaInput
requires libvlc 3.0 or higher
the libvlc instance
the media to be used by libvlc. LibVLCSharp will NOT dispose or close it.
Use or implement your own.
the libvlc options, in the form of ":your-option"
Add an option to the media.
// example
media.AddOption(":no-audio");
the media option, in the form of ":your-option"
This option will be used to determine how the media_player will
read the media. This allows to use VLC's advanced
reading/streaming options on a per-media basis.
The options are listed in 'vlc --long-help' from the command line,
e.g. "-sout-all". Keep in mind that available options and their semantics
vary across LibVLC versions and builds.
Not all options affects libvlc_media_t objects:
Specifically, due to architectural issues most audio and video options,
such as text renderer options, have no effects on an individual media.
These options must be set through libvlc_new() instead.
Convenience method for crossplatform media configuration
mediaConfiguration translate to strings parsed by the vlc engine, some are platform specific
Add an option to the media with configurable flags.
the media option
the flags for this option
This option will be used to determine how the media_player will
read the media. This allows to use VLC's advanced
reading/streaming options on a per-media basis.
The options are detailed in vlc --long-help, for instance
"--sout-all". Note that all options are not usable on medias:
specifically, due to architectural issues, video-related options
such as text renderer options cannot be set on a single media. They
must be set on the whole libvlc instance instead.
Get the media resource locator (mrl) from a media descriptor object
Duplicate a media descriptor object.
Read the meta of the media.
the meta to read
the media's meta
If the media has not yet been parsed this will return NULL.
Set the meta of the media (this function will not save the meta, call
libvlc_media_save_meta in order to save the meta)
the to write
the media's meta
Save the meta previously set
true if the write operation was successful
Get current of media descriptor object.
Get the current statistics about the media
structure that contain the statistics about the media
Get event manager from media descriptor object.
NOTE: this function doesn't increment reference counting.
event manager object
Get duration (in ms) of media descriptor object item.
duration of media item or -1 on error
Parse the media asynchronously with options.
It uses a flag to specify parse options (see ). All these flags can be combined. By default, the media is parsed only if it's a local file.
Note: Parsing can be aborted with ParseStop().
Parse options flags. They can be combined
maximum time allowed to preparse the media.
If -1, the default "preparse-timeout" option will be used as a timeout.
If 0, it will wait indefinitely. If > 0, the timeout will be used (in milliseconds).
token to cancel the operation
the parse status of the media
Return true is the media descriptor object is parsed
true if media object has been parsed otherwise it returns false
Get Parsed status for media descriptor object.
a value of the libvlc_media_parsed_status_t enum
libvlc_MediaParsedChanged
libvlc_media_parsed_status_t
LibVLC 3.0.0 or later
Stop the parsing of the media
When the media parsing is stopped, the libvlc_MediaParsedChanged event will
be sent with the libvlc_media_parsed_status_timeout status.
libvlc_media_parse_with_options
LibVLC 3.0.0 or later
Get media descriptor's elementary streams description
address to store an allocated array of Elementary Streams
descriptions (must be freed with libvlc_media_tracks_release
by the caller) [OUT]
the number of Elementary Streams (zero on error)
Note, you need to call libvlc_media_parse() or play the media at least once
before calling this function.
Not doing this will result in an empty array.
LibVLC 2.1.0 and later.
Get subitems of media descriptor object. This will increment
the reference count of supplied media descriptor object. Use
libvlc_media_list_release() to decrement the reference counting.
list of media descriptor subitems or NULL
The type of the media
Add a slave to the current media.
subtitle or audio
from 0 (low priority) to 4 (high priority)
Uri of the slave (should contain a valid scheme).
true on success, false on error.
A slave is an external input source that may contains an additional subtitle
track (like a .srt) or an additional audio track (like a .ac3).
This function must be called before the media is parsed (via
libvlc_media_parse_with_options()) or before the media is played (via
libvlc_media_player_play())
LibVLC 3.0.0 and later.
Add a slave to the current media.
subtitle or audio
from 0 (low priority) to 4 (high priority)
Uri of the slave (should contain a valid scheme).
true on success, false on error.
A slave is an external input source that may contains an additional subtitle
track (like a .srt) or an additional audio track (like a .ac3).
This function must be called before the media is parsed (via
libvlc_media_parse_with_options()) or before the media is played (via
libvlc_media_player_play())
LibVLC 3.0.0 and later.
Clear all slaves previously added by libvlc_media_slaves_add() or
internally.
LibVLC 3.0.0 and later.
Get a media descriptor's slave list
address to store an allocated array of slaves (must be
freed with libvlc_media_slaves_release()) [OUT]
the number of slaves (zero on error)
The list will contain slaves parsed by VLC or previously added by
libvlc_media_slaves_add(). The typical use case of this function is to save
a list of slave in a database for a later use.
LibVLC 3.0.0 and later.
libvlc_media_slaves_add
Get a media's codec description
The type of the track
the codec or fourcc
the codec description
Equality override for this media instance
the media to compare this one with
Custom hascode implemenation for this Media instance
the hashcode for this Media instance
Increments the native reference counter for the media
It consists of a media location and various optional meta data.
@{
LibVLC media item/descriptor external API
Callback prototype to open a custom bitstream input media.
private pointer as passed to libvlc_media_new_callbacks()
storage space for a private data pointer [OUT]
byte length of the bitstream or UINT64_MAX if unknown [OUT]
0 on success, non-zero on error. In case of failure, the other
callbacks will not be invoked and any value stored in *datap and *sizep is
discarded.
The same media item can be opened multiple times. Each time, this callback
is invoked. It should allocate and initialize any instance-specific
resources, then store them in *datap. The instance resources can be freed
in the
For convenience, *datap is initially NULL and *sizep is initially 0.
Callback prototype to read data from a custom bitstream input media.
private pointer as set by the
start address of the buffer to read data into
bytes length of the buffer
strictly positive number of bytes read, 0 on end-of-stream,
or -1 on non-recoverable error
callback
If no data is immediately available, then the callback should sleep.
The application is responsible for avoiding deadlock situations.
In particular, the callback should return an error if playback is stopped;
if it does not return, then libvlc_media_player_stop() will never return.
Callback prototype to seek a custom bitstream input media.
private pointer as set by the
absolute byte offset to seek to
0 on success, -1 on error.
callback
Callback prototype to close a custom bitstream input media.
private pointer as set by the
callback
The meta information changed
The parsing status changed
A sub item was added to this media's MediaList
The duration of the media changed
The media was freed on the native side
The media state changed
A sub item tree was added to this media
Note the order of libvlc_state_t enum must match exactly the order of
mediacontrol_PlayerStatus,
input_state_e enums,
and VideoLAN.LibVLCSharp.State (at bindings/cil/src/media.cs).
Expected states by web plugins are:
IDLE/CLOSE=0, OPENING=1, PLAYING=3, PAUSED=4,
STOPPING=5, ENDED=6, ERROR=7
Nothing special happening
Opening media
Buffering media
Playing media
Paused media
Stopped media
Ended media
Error media
Media track type such as Audio, Video or Text
Unknown track
Audio track
Video track
Text track
Video orientation
Normal. Top line represents top, left column left.
Flipped horizontally
Flipped vertically
Rotated 180 degrees
Transposed
Rotated 90 degrees clockwise (or 270 anti-clockwise)
Rotated 90 degrees anti-clockwise
Anti-transposed
Video projection
Rectangular
360 spherical
Cubemap layout standard
Type of a media slave: subtitle or audio.
Subtitle
Audio
Meta data types
Title metadata
Artist metadata
Genre metadata
Copyright metadata
Album metadata
Track number metadata
Description metadata
Rating metadata
Date metadata
Setting metadata
URL metadata
Language metadata
Now playing metadata
Publisher metadata
Encoded by metadata
Artwork URL metadata
Track ID metadata
Total track metadata
Director metadata
Season metadata
Episode metadata
Show name metadata
Actors metadata
Album artist metadata
Disc number metadata
Disc total metadata
The FromType enum is used to drive the media creation.
A media is usually created using a string, which can represent one of 3 things: FromPath, FromLocation, AsNode.
Create a media for a certain file path.
Create a media with a certain given media resource location,
for instance a valid URL.
note To refer to a local file with this function,
the file://... URI syntax must be used (see IETF RFC3986).
We recommend using FromPath instead when dealing with
local files.
Create a media as an empty node with a given name.
Parse flags used by libvlc_media_parse_with_options()
libvlc_media_parse_with_options
Parse media if it's a local file
Parse media even if it's a network file
Fetch meta and covert art using local resources
Fetch meta and covert art using network resources
Interact with the user (via libvlc_dialog_cbs) when preparsing this item
(and not its sub items). Set this flag in order to receive a callback
when the input is asking for credentials.
Parse status used sent by libvlc_media_parse_with_options() or returned by
libvlc_media_get_parsed_status()
libvlc_media_parse_with_options
libvlc_media_get_parsed_status
Parsing was skipped
Parsing failed
Parsing timed out
Parsing completed successfully
Media type
libvlc_media_get_type
Unknown media type
File type
Directory type
Disc type
Stream type
Playlist type
Configuration helper designed to be used for advanced libvlc configuration
More info at https://wiki.videolan.org/VLC_command-line_help/
Enable/disable hardware decoding (crossplatform).
Caching value for local files, in milliseconds [0 .. 60000ms]
Caching value for network resources, in milliseconds [0 .. 60000ms]
Builds the current MediaConfiguration for consumption by libvlc (or storage)
Configured libvlc options as strings
MediaDiscoverer should be used to find media on NAS and any SMB/UPnP-enabled device on your local network.
Media discoverer constructor
libvlc instance this will be attached to
name from one of LibVLC.MediaDiscoverers
Start media discovery.
To stop it, call MediaDiscover::stop() or destroy the object directly.
false in case of error, true otherwise
Stop media discovery.
Get media service discover object its localized name.
under v3 only
Get event manager from media service discover object.
under v3 only
Query if media service discover object is running.
The MediaList attached to this MediaDiscoverer
Media discovery has been started for this media discoverer
Media discovery has been stopped for this media discoverer
Dispose of this media discoverer
true if called from a method
Category of a media discoverer
libvlc_media_discoverer_list_get()
devices, like portable music player
LAN/WAN services, like Upnp, SMB, or SAP
Podcasts
Local directories, like Video, Music or Pictures directories
An abstract class that lets libvlc read a media from callbacks.
Override this to provide your own reading mechanism, or you can use the class
The GCHandle to be passed to callbacks as userData
The constructor
A value indicating whether this Media input can be seeked in.
LibVLC calls this method when it wants to open the media
This value must be filled with the length of the media (or ulong.MaxValue if unknown)
true if the stream opened successfully
LibVLC calls this method when it wants to read the media
The buffer where read data must be written
The buffer length
strictly positive number of bytes read, 0 on end-of-stream, or -1 on non-recoverable error
LibVLC calls this method when it wants to seek to a specific position in the media
The offset, in bytes, since the beginning of the stream
true if the seek succeeded, false otherwise
LibVLC calls this method when it wants to close the media.
Override this to dispose things in your child class
Disposes of this instance
The MediaList holds a list of Media types
Get subitems of media descriptor object.
Get media service discover media list.
Create an empty media list.
Associate media instance with this media list instance. If another
media instance was present it will be released.
media instance to add
Add media instance to media list
a media instance
true on success, false if the media list is read-only
Insert media instance in media list on a position.
a media instance
position in the array where to insert
true on success, false if the media list is read-only
Remove media instance from media list on a position.
position in the array where to remove the iteam
true on success, false if the media list is read-only or the item was not found
Get count on media list items.
Gets the element at the specified index
position in array where to insert
media instance at position, or null if not found.
In case of success, Media.Retain() is called to increase the refcount on the media.
Find index position of List media instance in media list. Warning: the
function will return the first matched position.
media instance
position of media instance or -1 if media not found
This indicates if this media list is read-only from a user point of view.
True if readonly, false otherwise
Get lock on media list items
Release lock on media list items The MediaList lock should be held upon entering this function.
Get libvlc_event_manager from this media list instance. The
p_event_manager is immutable, so you don't have to hold the lock
Increments the native reference counter for this medialist instance
An item has been added to the MediaList
An item is about to be added to the MediaList
An item has been deleted from the MediaList
An item is about to be deleted from the MediaList
The media list reached its end
Returns an enumerator that iterates through a collection of media
an enumerator over a media collection
The MediaPlayer type is used to control playback, set renderers, provide events and much more
The GCHandle to be passed to callbacks as userData
Create an empty Media Player object
the libvlc instance in which the Media Player
should be created.
a new media player object, or NULL on error.
Create a Media Player object from a Media
the media. Afterwards the p_md can be safely
destroyed.
a new media player object, or NULL on error.
Get the media used by the media_player.
Set the media that will be used by the media_player.
If any, previous md will be released.
Note: It is safe to release the Media on the C# side after it's been set on the MediaPlayer successfully
return true if the media player is playing, false otherwise
Start playback with Media that is set
If playback was already started, this method has no effect
true if successful
Set media and start playback
true if successful
Pause or resume (no effect if there is no media).
version LibVLC 1.1.1 or later
play/resume if true, pause if false
Toggle pause (no effect if there is no media)
Stop the playback (no effect if there is no media)
warning:
This is synchronous, and will block until all VLC threads have been joined.
Calling this from a VLC callback is a bound to cause a deadlock.
Get the NSView handler previously set
return the NSView handler or 0 if none where set
Set the NSView handler where the media player should render its video output.
Use the vout called "macosx".
The drawable is an NSObject that follow the
VLCOpenGLVideoViewEmbedding protocol: VLCOpenGLVideoViewEmbedding NSObject
Or it can be an NSView object.
If you want to use it along with Qt4 see the QMacCocoaViewContainer.
Then the following code should work: { NSView *video = [[NSView
alloc] init]; QMacCocoaViewContainer *container = new
QMacCocoaViewContainer(video, parent);
libvlc_media_player_set_nsobject(mp, video); [video release]; }
You can find a live example in VLCVideoView in VLCKit.framework.
Set an X Window System drawable where the media player should render its video output.
The call takes effect when the playback starts. If it is already started, it might need to be stopped before changes apply.
If LibVLC was built without X11 output support, then this function has no effects.
By default, LibVLC will capture input events on the video rendering area.
Use libvlc_video_set_mouse_input() and libvlc_video_set_key_input() to disable that and deliver events to the parent window / to the application instead.
By design, the X11 protocol delivers input events to only one recipient.
Warning:
The application must call the XInitThreads() function from Xlib before libvlc_new(), and before any call to XOpenDisplay() directly
or via any other library.Failure to call XInitThreads() will seriously impede LibVLC performance.
Calling XOpenDisplay() before XInitThreads() will eventually crash the process. That is a limitation of Xlib.
uint: X11 window ID
Set a Win32/Win64 API window handle (HWND) where the media player
should render its video output. If LibVLC was built without
Win32/Win64 API output support, then this has no effects.
Get the Windows API window handle (HWND) previously set
The movie length (in ms), or -1 if there is no media.
Set the movie time (in ms). This has no effect if no media is being
played. Not all formats and protocols support this.
Get the movie time (in ms), or -1 if there is no media.
Set movie position as percentage between 0.0 and 1.0. This has no
effect if playback is not enabled. This might not work depending on
the underlying input format and protocol.
Get movie position as percentage between 0.0 and 1.0.
Set the movie time. This has no effect if no media is being
played. Not all formats and protocols support this.
the movie time to seek to
Set movie chapter (if applicable).
Get the movie chapter number currently playing, or -1 if there is no media.
Get the number of chapters in movie, or -1.
True if the player is able to play
Get the number of chapters in title, or -1
Set movie title number to play
Get movie title number currently playing, or -1
The title number count, or -1
Set previous chapter (if applicable)
Set next chapter (if applicable)
Get the requested movie play rate.
warning
Depending on the underlying media, the requested rate may be
different from the real playback rate.
Set movie play rate
movie play rate to set
return -1 if an error was detected, 0 otherwise (but even then, it
might not actually work depending on the underlying media protocol)
Get the current state of the media player (playing, paused, ...)
Get the frames per second (fps) for this playing movie, or 0 if unspecified
Get the number of video outputs
True if the media player can seek
True if the media player can pause
True if the current program is scrambled
LibVLC 2.2.0 or later
Display the next frame (if supported)
Navigate through DVD Menu
the Navigation mode
LibVLC 2.0.0 or later
Set if, and how, the video title will be shown when media is played.
position at which to display the title, or libvlc_position_disable to prevent the title from being displayed
title display timeout in milliseconds (ignored if libvlc_position_disable)
LibVLC 2.1.0 or later
Toggle fullscreen status on non-embedded video outputs.
warning: The same limitations applies to this function as to MediaPlayer::setFullscreen()
Enable or disable fullscreen.
Warning, TL;DR version : Unless you know what you're doing, don't use this.
Put your VideoView inside a fullscreen control instead, refer to your platform documentation.
Warning, long version :
With most window managers, only a top-level windows can be in full-screen mode.
Hence, this function will not operate properly if libvlc_media_player_set_xwindow() was used to embed the video in a non-top-level window.
In that case, the embedding window must be reparented to the root window before fullscreen mode is enabled.
You will want to reparent it back to its normal parent when disabling fullscreen.
return the fullscreen status (boolean)
Toggle teletext transparent status on video output.
Apply new equalizer settings to a media player.
The equalizer is first created by invoking libvlc_audio_equalizer_new() or libvlc_audio_equalizer_new_from_preset().
It is possible to apply new equalizer settings to a media player whether the media player is currently playing media or not.
Invoking this method will immediately apply the new equalizer settings to the audio output of the currently playing media if there is any.
If there is no currently playing media, the new equalizer settings will be applied later if and when new media is played.
Equalizer settings will automatically be applied to subsequently played media.
To disable the equalizer for a media player invoke this method passing NULL for the p_equalizer parameter.
The media player does not keep a reference to the supplied equalizer so it is safe for an application to release the equalizer reference
any time after this method returns.
opaque equalizer handle, or NULL to disable the equalizer for this media player
LibVLC 2.2.0 or later
true on success, false otherwise.
unsetEqualizer disable equalizer for this media player
true on success, false otherwise.
Sets callbacks and private data for decoded audio.
Use libvlc_audio_set_format() or libvlc_audio_set_format_callbacks() to configure the decoded audio format.
Note: The audio callbacks override any other audio output mechanism. If the callbacks are set, LibVLC will not output audio in any way.
callback to play audio samples (must not be NULL)
callback to pause playback (or NULL to ignore)
callback to resume playback (or NULL to ignore)
callback to flush audio buffers (or NULL to ignore)
callback to drain audio buffers (or NULL to ignore)
Set callbacks and private data for decoded audio.
This only works in combination with libvlc_audio_set_callbacks().
Use libvlc_audio_set_format() or libvlc_audio_set_format_callbacks() to configure the decoded audio format.
callback to apply audio volume, or NULL to apply volume in software
Sets decoded audio format via callbacks.
This only works in combination with libvlc_audio_set_callbacks().
callback to select the audio format (cannot be NULL)
callback to release any allocated resources (or NULL)
Sets a fixed decoded audio format.
This only works in combination with libvlc_audio_set_callbacks(), and is mutually exclusive with libvlc_audio_set_format_callbacks().
a four-characters string identifying the sample format (e.g. "S16N" or "FL32")
sample rate (expressed in Hz)
channels count
Selects an audio output module.
Note:
Any change will take effect only after playback is stopped and restarted. Audio output cannot be changed while playing.
name of audio output, use psz_name of
true if function succeeded, false on error
Get the current audio output device identifier.
This complements
warning The initial value for the current audio output device identifier
may not be set or may be some unknown value.A LibVLC application should
compare this value against the known device identifiers (e.g.those that
were previously retrieved by a call to or
) to find the current audio output device.
It is possible that the selected audio output device changes(an external
change) without a call to .That may make this
method unsuitable to use if a LibVLC application is attempting to track
dynamic audio device changes as they happen.
the current audio output device identifier, or NULL if no device is selected or in case of error.
Configures an explicit audio output device.
If the module paramater is NULL, audio output will be moved to the device
specified by the device identifier string immediately.This is the
recommended usage.
A list of adequate potential device strings can be obtained with
However passing NULL is supported in LibVLC version 2.2.0 and later only;
in earlier versions, this function would have no effects when the module
parameter was NULL.
If the module parameter is not NULL, the device parameter of the
corresponding audio output, if it exists, will be set to the specified
string.
A list of adequate potential device strings can be obtained with
device identifier string
If NULL, current audio output module. if non-NULL, name of audio output module
Gets a list of potential audio output devices
Not all audio outputs support enumerating devices. The audio output may be functional even if the list is empty (NULL).
The list may not be exhaustive. Some audio output devices in the list might not actually work in some circumstances.
By default, it is recommended to not specify any explicit audio device.
Toggle mute status.
Warning
Toggling mute atomically is not always possible: On some platforms, other processes can mute the VLC audio playback
stream asynchronously.
Thus, there is a small race condition where toggling will not work.
See also the limitations of libvlc_audio_set_mute().
Get current mute status.
Set mute status.
Warning
This function does not always work.
If there are no active audio playback stream, the mute status might not be available.
If digital pass-through (S/PDIF, HDMI...) is in use, muting may be unapplicable.
Also some audio output plugins do not support muting at all.
Note
To force silent playback, disable all audio tracks. This is more efficient and reliable than mute.
Get/Set the volume in percents (0 = mute, 100 = 0dB)
Get the number of available audio tracks (int), or -1 if unavailable
Retrive the audio track description
Get current audio track ID or -1 if no active input.
Set current audio track.
the track ID (i_id field from track description)
true on success, false on error
Get current audio channel.
Set current audio channel.
the audio channel
Equals override based on the native instance reference
the mediaplayer instance to compare this to
Custom hascode implemenation for this MediaPlayer instance
the hashcode for this MediaPlayer instance
Get current audio delay (microseconds).
Set current audio delay. The audio delay will be reset to zero each
time the media changes.
the audio delay (microseconds)
true on success, false on error
Set callbacks and private data to render decoded video to a custom area in memory.
Use libvlc_video_set_format() or libvlc_video_set_format_callbacks() to configure the decoded format.
Warning
Rendering video into custom memory buffers is considerably less efficient than rendering in a custom window as normal.
For optimal perfomances, VLC media player renders into a custom window, and does not use this function and associated callbacks.
It is highly recommended that other LibVLC-based application do likewise.
To embed video in a window, use libvlc_media_player_set_xid() or equivalent depending on the operating system.
If window embedding does not fit the application use case, then a custom LibVLC video output display plugin is required to maintain optimal video rendering performances.
The following limitations affect performance:
Hardware video decoding acceleration will either be disabled completely, or require(relatively slow) copy from video/DSP memory to main memory.
Sub-pictures(subtitles, on-screen display, etc.) must be blent into the main picture by the CPU instead of the GPU.
Depending on the video format, pixel format conversion, picture scaling, cropping and/or picture re-orientation,
must be performed by the CPU instead of the GPU.
Memory copying is required between LibVLC reference picture buffers and application buffers (between lock and unlock callbacks).
callback to lock video memory (must not be NULL)
callback to unlock video memory (or NULL if not needed)
callback to display video (or NULL if not needed)
Set decoded video chroma and dimensions. This only works in
combination with MediaPlayer::setCallbacks() , and is mutually exclusive
with MediaPlayer::setFormatCallbacks()
a four-characters string identifying the chroma (e.g."RV32" or "YUYV")
pixel width
pixel height
line pitch (in bytes)
Set decoded video chroma and dimensions.
This only works in combination with libvlc_video_set_callbacks().
callback to select the video format (cannot be NULL)
callback to release any allocated resources (or NULL)
Enable or disable key press events handling, according to the LibVLC hotkeys configuration.
By default and for historical reasons, keyboard events are handled by the LibVLC video widget.
Note
On X11, there can be only one subscriber for key press and mouse click events per window.
If your application has subscribed to those events for the X window ID of the video widget,
then LibVLC will not be able to handle key presses and mouse clicks in any case.
Warning
This function is only implemented for X11 and Win32 at the moment.
true to handle key press events, false to ignore them.
Enable or disable mouse click events handling.
By default, those events are handled. This is needed for DVD menus to work, as well as a few video filters such as "puzzle".
Warning
This function is only implemented for X11 and Win32 at the moment.
true to handle mouse click events, false to ignore them.
Get the pixel dimensions of a video.
number of the video (starting from, and most commonly 0)
pointer to get the pixel width [OUT]
pointer to get the pixel height [OUT]
Get the mouse pointer coordinates over a video.
Coordinates are expressed in terms of the decoded video resolution, not in terms of pixels on the screen/viewport
(to get the latter, you can query your windowing system directly).
Either of the coordinates may be negative or larger than the corresponding dimension of the video,
if the cursor is outside the rendering area.
Warning
The coordinates may be out-of-date if the pointer is not located on the video rendering area.
LibVLC does not track the pointer if it is outside of the video widget.
Note
LibVLC does not support multiple pointers(it does of course support multiple input devices sharing the same pointer) at the moment.
number of the video (starting from, and most commonly 0)
pointer to get the abscissa [OUT]
pointer to get the ordinate [OUT]
true on success, false on failure
Get/Set the current video scaling factor. See also MediaPlayer::setScale() .
That is the ratio of the number of
pixels on screen to the number of pixels in the original decoded video
in each dimension.Zero is a special value; it will adjust the video
to the output window/drawable(in windowed mode) or the entire screen.
Note that not all video outputs support scaling.
Get/set current video aspect ratio.
Set to null to reset to default
Invalid aspect ratios are ignored.
The current video subtitle track
Set Spu (subtitle)
Video subtitle track to select (id from track description)
true on success, false otherwise
Get the number of available video subtitles.
Retrieve SpuDescription in a TrackDescription struct
Get the current subtitle delay.
Set the subtitle delay.
This affects the timing of when the subtitle will be displayed.
Positive values result in subtitles being displayed later, while negative values will result in subtitles being displayed earlier.
The subtitle delay will be reset to zero each time the media changes.
time (in microseconds) the display of subtitles should be delayed
true if successful, false otherwise
Get the description of available titles.
Get the full description of available chapters.
Index of the title to query for chapters (uses current title if set to -1)
Array of chapter descriptions.
Get the description of available chapters for specific title.
selected title
chapter descriptions
Get/Set current crop filter geometry.
Empty string to unset
Get current teletext page requested.
Set new teletext page to retrieve.
Get number of available video tracks.
Get the description of available video tracks.
Get current video track ID (int) or -1 if no active input.
Set video track.
the track ID (i_id field from track description)
true on sucess, false out of range
Take a snapshot of the current video window.
If i_width AND i_height is 0, original size is used. If i_width XOR
i_height is 0, original aspect-ratio is preserved.
number of video output (typically 0 for the first/only one)
the path where to save the screenshot to
the snapshot's width
the snapshot's height
true on success
Enable or disable deinterlace filter
type of deinterlace filter, null to disable
Get an integer marquee option value
marq option to get
Get a string marquee option value
marq option to get
Enable, disable or set an integer marquee option
Setting libvlc_marquee_Enable has the side effect of enabling (arg !0)
or disabling (arg 0) the marq filter.
marq option to set
marq option value
Enable, disable or set an string marquee option
marq option to set
marq option value
Get integer logo option.
logo option to get, values of libvlc_video_logo_option_t
Set logo option as integer. Options that take a different type value
are ignored. Passing libvlc_logo_enable as option value has the side
effect of starting (arg !0) or stopping (arg 0) the logo filter.
logo option to set, values of libvlc_video_logo_option_t
logo option value
Set logo option as string. Options that take a different type value are ignored.
logo option to set, values of libvlc_video_logo_option_t
logo option value
Get integer adjust option.
adjust option to get, values of libvlc_video_adjust_option_t
Set adjust option as integer. Options that take a different type value
are ignored. Passing libvlc_adjust_enable as option value has the side
effect of starting (arg !0) or stopping (arg 0) the adjust filter.
adust option to set, values of libvlc_video_adjust_option_t
adjust option value
Get adjust option float value
The option for which to get the value
the float value for a given option
Set adjust option as float. Options that take a different type value are ignored.
adust option to set, values of
adjust option value
Add a slave to the current media player.
note If the player is playing, the slave will be added directly. This call
will also update the slave list of the attached VLC::Media.
subtitle or audio
Uri of the slave (should contain a valid scheme).
True if this slave should be selected when it's loaded
Current 360 viewpoint of this mediaplayer.
Update with
Update the video viewpoint information.
The values are set asynchronously, it will be used by the next frame displayed.
It is safe to call this function before the media player is started.
LibVLC 3.0.0 and later
view point yaw in degrees ]-180;180]
view point pitch in degrees ]-90;90]
view point roll in degrees ]-180;180]
field of view in degrees ]0;180[ (default 80.)
if true replace the old viewpoint with the new one. If false, increase/decrease it.
true if successful, false otherwise
Set a renderer to the media player.
discovered renderer item or null to fallback on local rendering
true on success, false otherwise
Gets the media role.
version LibVLC 3.0.0 and later.
Sets the media role.
version LibVLC 3.0.0 and later.
true on success, false otherwise
Increments the native reference counter for this mediaplayer instance
Enable/disable hardware decoding in a crossplatform way.
Caching value for local files, in milliseconds [0 .. 60000ms]
Caching value for network resources, in milliseconds [0 .. 60000ms]
A LibVLC media player plays one media (usually in a custom drawable).
@{
LibVLC simple media player external API
Opaque equalizer handle.
Equalizer settings can be applied to a media player.
Callback prototype to allocate and lock a picture buffer.
private pointer as passed to libvlc_video_set_callbacks() [IN]
start address of the pixel planes (LibVLC allocates the array
of void pointers, this callback must initialize the array) [OUT]
a private pointer for the display and unlock callbacks to identify
the picture buffers
Whenever a new video frame needs to be decoded, the lock callback is
invoked. Depending on the video chroma, one or three pixel planes of
adequate dimensions must be returned via the second parameter. Those
planes must be aligned on 32-bytes boundaries.
Callback prototype to unlock a picture buffer.
private pointer as passed to libvlc_video_set_callbacks() [IN]
private pointer returned from the
pixel planes as defined by the
When the video frame decoding is complete, the unlock callback is invoked.
This callback might not be needed at all. It is only an indication that the
application can now read the pixel values if it needs to.
A picture buffer is unlocked after the picture is decoded,
but before the picture is displayed.
callback [IN]
callback (this parameter is only for convenience) [IN]
Callback prototype to display a picture.
private pointer as passed to libvlc_video_set_callbacks() [IN]
private pointer returned from the
When the video frame needs to be shown, as determined by the media playback
clock, the display callback is invoked.
callback [IN]
Callback prototype to configure picture buffers format.
This callback gets the format of the video as output by the video decoder
and the chain of video filters (if any). It can opt to change any parameter
as it needs. In that case, LibVLC will attempt to convert the video format
(rescaling and chroma conversion) but these operations can be CPU intensive.
pointer to the private pointer passed to
libvlc_video_set_callbacks() [IN/OUT]
pointer to the 4 bytes video format identifier [IN/OUT]
pointer to the pixel width [IN/OUT]
pointer to the pixel height [IN/OUT]
table of scanline pitches in bytes for each pixel plane
(the table is allocated by LibVLC) [OUT]
table of scanlines count for each plane [OUT]
the number of picture buffers allocated, 0 indicates failure
For each pixels plane, the scanline pitch must be bigger than or equal to
the number of bytes per pixel multiplied by the pixel width.
Similarly, the number of scanlines must be bigger than of equal to
the pixel height.
Furthermore, we recommend that pitches and lines be multiple of 32
to not break assumptions that might be held by optimized code
in the video decoders, video filters and/or video converters.
Callback prototype to configure picture buffers format.
private pointer as passed to libvlc_video_set_callbacks()
(and possibly modified by
Callback prototype to setup the audio playback.
pointer to the data pointer passed to
libvlc_audio_set_callbacks() [IN/OUT]
4 bytes sample format [IN/OUT]
sample rate [IN/OUT]
channels count [IN/OUT]
0 on success, anything else to skip audio playback
This is called when the media player needs to create a new audio output.
Callback prototype for audio playback cleanup.
data pointer as passed to libvlc_audio_set_callbacks() [IN]
This is called when the media player no longer needs an audio output.
Callback prototype for audio playback.
data pointer as passed to libvlc_audio_set_callbacks() [IN]
pointer to a table of audio samples to play back [IN]
number of audio samples to play back
expected play time stamp (see libvlc_delay())
The LibVLC media player decodes and post-processes the audio signal
asynchronously (in an internal thread). Whenever audio samples are ready
to be queued to the output, this callback is invoked.
The number of samples provided per invocation may depend on the file format,
the audio coding algorithm, the decoder plug-in, the post-processing
filters and timing. Application must not assume a certain number of samples.
The exact format of audio samples is determined by libvlc_audio_set_format()
or libvlc_audio_set_format_callbacks() as is the channels layout.
Note that the number of samples is per channel. For instance, if the audio
track sampling rate is 48000 Hz, then 1200 samples represent 25 milliseconds
of audio signal - regardless of the number of audio channels.
Callback prototype for audio pause.
data pointer as passed to libvlc_audio_set_callbacks() [IN]
time stamp of the pause request (should be elapsed already)
LibVLC invokes this callback to pause audio playback.
The pause callback is never called if the audio is already paused.
Callback prototype for audio resumption.
data pointer as passed to libvlc_audio_set_callbacks() [IN]
time stamp of the resumption request (should be elapsed already)
LibVLC invokes this callback to resume audio playback after it was
previously paused.
The resume callback is never called if the audio is not paused.
Callback prototype for audio buffer flush.
LibVLC invokes this callback if it needs to discard all pending buffers and
stop playback as soon as possible. This typically occurs when the media is stopped.
data pointer as passed to libvlc_audio_set_callbacks() [IN]
current presentation timestamp
Callback prototype for audio buffer drain.
data pointer as passed to libvlc_audio_set_callbacks() [IN]
LibVLC may invoke this callback when the decoded audio track is ending.
There will be no further decoded samples for the track, but playback should
nevertheless continue until all already pending buffers are rendered.
Callback prototype for audio volume change.
data pointer as passed to libvlc_audio_set_callbacks() [IN]
software volume (1. = nominal, 0. = mute)
muted flag
Get the Event Manager from which the media player send event.
The media of this mediaplayer changed
Nothing special to report
The mediaplayer is opening a media
The mediaplayer is buffering
The mediaplayer started playing a media
The mediaplayer paused playback
The mediaplayer stopped playback
The mediaplayer went forward in the playback
The mediaplayer went backward in the playback
The mediaplayer reached the end of the playback
The mediaplayer encountered an error during playback
The mediaplayer's playback time changed
The mediaplayer's position changed
The mediaplayer's seek capability changed
The mediaplayer's pause capability changed
The title of the mediaplayer changed
The mediaplayer changed the chapter of a media
The mediaplayer took a snapshot
The length of a playback changed
The Video Output count of the MediaPlayer changed
The mediaplayer scrambled status changed
The mediaplayer has a new Elementary Stream (ES)
The mediaplayer has one less Elementary Stream (ES)
An Elementary Stream (ES) was selected
The mediaplayer's audio device changed
The mediaplayer is corked
The mediaplayer is uncorked
The mediaplayer is muted
The mediaplayer is unmuted
The mediaplayer's volume changed
Dispose override
Effectively stops playback and disposes a media if any
release any unmanaged resources
Description for titles
Menu title
Interactive title
Marq options definition
Enable marquee
Text marquee
Color marquee
Opacity marquee
Position marquee
Refresh marquee
Size marquee
Timeout marquee
X marquee
Y marquee
Navigation mode
Activate
Navigation up
Navigation down
Navigation left
Navigation right
Navigation popup
Enumeration of values used to set position (e.g. of video title).
Disable
Center video title
Left video title
Right video title
Top video title
TopLeft video title
TopRight video title
Bottom video title
BottomLeft video title
BottomRight video title
Enumeration of teletext keys than can be passed via
libvlc_video_set_teletext()
Red
Green
Yellow
Blue
Index
option values for libvlc_video_{get,set}_logo_{int,string}
Enable
string argument, "file,d,t;file,d,t;..."
X
Y
Delay
Repeat
Opacity
Position
option values for libvlc_video_{get,set}_adjust_{int,float,bool}
Enable
Contrast
Brightness
Hue
Saturation
Gamma
Audio channels
Error
Stereo mode
RStereo mode
Left mode
Right mode
Dolbys mode
Media player roles.
LibVLC 3.0.0 and later.
See
Don't use a media player role
Music (or radio) playback
Video playback
Speech, real-time communication
Video game
User interaction feedback
Embedded animation (e.g. in web page)
Audio editing/production
Accessibility
Testing
The renderer discoverer can be used to find and use a Chromecast or other distant renderers.
Create a new renderer discoverer with a LibVLC and protocol name depending on host platform
libvlc instance this will be connected to
The service discovery protocol name depending on platform. Use to find the one for your platform,
or let libvlcsharp find it for you
Start the renderer discovery
true if start successful
Stop the renderer discovery
Raised when a renderer item has been found
Raised when a renderer item has disappeared
A renderer item represents a device that libvlc can use to render media.
Name of the renderer item
Type of the renderer item
IconUri of the renderer item
true if the renderer item can render video
true if the renderer item can render audio
A implementation that reads from a .NET stream
Initializes a new instance of , which reads from the given .NET stream.
You are still responsible to dispose the stream you give as input.
The stream to be read from.
LibVLC calls this method when it wants to open the media
This value must be filled with the length of the media (or ulong.MaxValue if unknown)
true if the stream opened successfully
LibVLC calls this method when it wants to read the media
The buffer where read data must be written
The buffer length
strictly positive number of bytes read, 0 on end-of-stream, or -1 on non-recoverable error
LibVLC calls this method when it wants to seek to a specific position in the media
The offset, in bytes, since the beginning of the stream
true if the seek succeeded, false otherwise
LibVLC calls this method when it wants to close the media.
Description for audio output.
AudioOutputDescription default constructor
Audio output name
Audio output description
Audio output name
Audio output description
Description for audio output device
AudioOutputDevice default constructor
Device identifier string
User-friendly device description
Device identifier string.
User-friendly device description.
Description for chapters.
Time-offset of the chapter in milliseconds
Duration of the chapter in milliseconds
Chapter name
TrackDescription constructor
Chapter time-offset
Chapter duration
Chapter name
Description of a module.
Default constructor for ModuleDescription
Module name
Module short name
Module long name
Module help
Module name
Module short name
Module long name
Module help
Description for video, audio tracks and subtitles. It contains
id, name (description string)
Track description Id
Track description
TrackDescription constructor
Track description Id
Track description
Description of a media discoverer
Media discoverer description name
Media discoverer description long name
Media discoverer category
A slave of a libvlc_media_t
libvlc_media_slaves_get
Media slave URI
Media slave type
Media slave priority
Statistics of a Media
The number of bytes read
The input bitrate
The number of bytes read by the demux
The demux bitrate
The number of frame discarded
The number of frame dropped
The number of decoded video blocks
The number of decoded audio blocks
The number of frames displayed
The number of frames lost
The number of buffers played
The number of buffers lost
The number of packets sent
The number of bytes sent
The bitrate used to send
Audio track
Audio track channels
Audio track rate
Video track
Video height
Video Width
Video SarNum
Video SarDen
Video frame rate num
Video frame rate den
Video orientation
Video projection
Video viewpoint
Subtitle track
Subtitle encoding
Media track information
Media track codec
Media track original fourcc
Media track id
Media track type
Media track profile
Media track level
Media track data
Media track bitrate
Media track language
Media track description
Media track data struct, containing info about audio, video and subtitles track
Audio track
Video track
Subtitle track
Renderer description
Renderer Name
Renderer long name
Viewpoint for video outputs
view point yaw in degrees ]-180;180]
view point pitch in degrees ]-90;90]
view point roll in degrees ]-180;180]
field of view in degrees ]0;180[ (default 80.)
This exception is thrown when a problem with VLC occured
VLC Exception constructor
Creates a with a message and an inner exeption