Difference between revisions of "Using libvlc with Delphi"
Jump to navigation
Jump to search
Line 6: | Line 6: | ||
== Full source code == | == Full source code == | ||
+ | |||
+ | === Implementations === | ||
<pre>unit Unit1; | <pre>unit Unit1; | ||
interface | interface | ||
Line 56: | Line 58: | ||
vlcMedia: plibvlc_media_t; | vlcMedia: plibvlc_media_t; | ||
vlcMediaPlayer: plibvlc_media_player_t; | vlcMediaPlayer: plibvlc_media_player_t; | ||
+ | </pre> | ||
+ | === Get VLC installation path === | ||
− | // ----------------------------------------------------------------------------- | + | Normally, the library libvlc.dll is in "C:\Program files\Videolan\VLC\". This function read registry to get the correct VLC installation path, stored in key HKEY_LOCAL_MACHINE\Software\VideoLAN\VLC. |
+ | <pre>// ----------------------------------------------------------------------------- | ||
// Read registry to get VLC installation path | // Read registry to get VLC installation path | ||
// ----------------------------------------------------------------------------- | // ----------------------------------------------------------------------------- | ||
Line 82: | Line 87: | ||
end; | end; | ||
end; | end; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | + | [[Category:Coding]] [[Category:Delphi]] |
Revision as of 06:36, 9 January 2012
This is a sample code to play media files using libvlc with Delphi (test with Delphi XE2 VCL form, VLC 1.1.11).
Form design
Use a simple form with 3 control : Panel1 (TPanel) to display video, btnPlay (TButton) to play media, and btnStop (TButton) to stop playing
Full source code
Implementations
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TForm1 = class(TForm) btnPlay: TButton; btnStop: TButton; Panel1: TPanel; procedure btnPlayClick(Sender: TObject); procedure btnStopClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; plibvlc_instance_t = type Pointer; plibvlc_media_player_t = type Pointer; plibvlc_media_t = type Pointer; var Form1: TForm1; implementation {$R *.dfm} var libvlc_media_new_path : function(p_instance : Plibvlc_instance_t; path : PAnsiChar) : Plibvlc_media_t; cdecl; libvlc_media_new_location : function(p_instance : plibvlc_instance_t; psz_mrl : PAnsiChar) : Plibvlc_media_t; cdecl; libvlc_media_player_new_from_media : function(p_media : Plibvlc_media_t) : Plibvlc_media_player_t; cdecl; libvlc_media_player_set_hwnd : procedure(p_media_player : Plibvlc_media_player_t; drawable : Pointer); cdecl; libvlc_media_player_play : procedure(p_media_player : Plibvlc_media_player_t); cdecl; libvlc_media_player_stop : procedure(p_media_player : Plibvlc_media_player_t); cdecl; libvlc_media_player_release : procedure(p_media_player : Plibvlc_media_player_t); cdecl; libvlc_media_player_is_playing : function(p_media_player : Plibvlc_media_player_t) : Integer; cdecl; libvlc_media_release : procedure(p_media : Plibvlc_media_t); cdecl; libvlc_new : function(argc : Integer; argv : PAnsiChar) : Plibvlc_instance_t; cdecl; libvlc_release : procedure(p_instance : Plibvlc_instance_t); cdecl; vlcLib: integer; vlcInstance: plibvlc_instance_t; vlcMedia: plibvlc_media_t; vlcMediaPlayer: plibvlc_media_player_t;
Get VLC installation path
Normally, the library libvlc.dll is in "C:\Program files\Videolan\VLC\". This function read registry to get the correct VLC installation path, stored in key HKEY_LOCAL_MACHINE\Software\VideoLAN\VLC.
// ----------------------------------------------------------------------------- // Read registry to get VLC installation path // ----------------------------------------------------------------------------- function GetVLCLibPath: String; var Handle: HKEY; RegType: Integer; DataSize: Cardinal; Key: PWideChar; begin Result := ''; Key := 'Software\VideoLAN\VLC'; if RegOpenKeyEx(HKEY_LOCAL_MACHINE, Key, 0, KEY_READ, Handle) = ERROR_SUCCESS then begin if RegQueryValueEx(Handle, 'InstallDir', nil, @RegType, nil, @DataSize) = ERROR_SUCCESS then begin SetLength(Result, DataSize); RegQueryValueEx(Handle, 'InstallDir', nil, @RegType, PByte(@Result[1]), @DataSize); Result[DataSize] := '\'; end else Showmessage('Error on reading registry'); RegCloseKey(Handle); Result := String(PChar(Result)); end; end;