![]() |
LibVLC - VLC in Delphi nutzen
![]() Im Repository gibts ein Beispiel für einen ganz einfachen Video-Player auf VLC-Basis. Um das Beispiel (und eigene Programme) zum Laufen zu bringen, muss man sich nur doch die Datei libvlc.dll, libvlccore.dll sowie die Ordner plugins und locale von einer VLC-Installation oder aus dem VLC-Zip neben die .exe kopieren. Für weitergehende Studien empfiehlt es sich, sich die Sourcen des VLC herunter zu laden und sich die Kommentare in den Header-Dateien unter "include/vlc/*.h" an zu sehen. Viel Spass. :) //edit: Falls jemand Probleme mit der Unit hat, packe er einfach eine Demo in den Anhang seiner Antwort in diesem Thread. (Was für ein Satz :)) @mkinzler: Bitte ... gern geschehen. |
Re: LibVLC - VLC in Delphi nutzen
Danke Benjamin :thumb:
|
Re: LibVLC - VLC in Delphi nutzen
Grandios. Ich habe mich gerade 5 Minuten lang beim Anblick des Titels gefragt, warum zum Henker man für die VCL eine eigene Lib benötigt... :roll:
|
Re: LibVLC - VLC in Delphi nutzen
Eine schöne Sache!
Aber: Wie funktioniert die Positionsanzeige? Die Ausgabe bleibt bei Null stehen.
Delphi-Quellcode:
procedure TForm5.Timer1Timer(Sender: TObject);
begin if FLib.libvlc_media_player_is_playing(FPlayer, @FException) <> 0 then BEGIN tb_pos.position:= Round(FLib.libvlc_media_player_get_position(FPlayer, @FException)); lb_pos1.caption:=IntToStr(Round(FLib.libvlc_media_player_get_position(FPlayer, @FException))); END; end; |
Re: LibVLC - VLC in Delphi nutzen
Ohne, dass ich mir das Teil angeschaut habe: kann man darüber auch eigene Streams abspielen?
|
Re: LibVLC - VLC in Delphi nutzen
@hathor: Keine Ahnung warum die Position null bleibt. Über die Zeit (get_length, get_time, set_time) gehts. Ich hab das Beispiel im Repository mal angepasst.
@Dominik: Was meinst du mit Streams? TMemoryStream ... nein, das geht imho nicht. Aber alles was ein VLC-Player kann(Audio-/Videostreams aus dem Inet abspielen oder auch selbst erzeugen), kann man auch mit der LibVLC machen. |
Re: LibVLC - VLC in Delphi nutzen
Internetstreams sollten aber gehen
|
Re: LibVLC - VLC in Delphi nutzen
Die Lib geht auch unter Lazarus, nach einigen kleineren Anpassungen. Nur ich kann im Moment noch nicht das Video zu einem Panel zuordnen:
Delphi-Quellcode:
Bei XINE ging das so wie es in der ersten Zeile steht. Verwende ich nun @ oder Pointer(w) geht es nicht.
w:=GDK_WINDOW_XWINDOW(PGtkWidget(PtrUInt(Form1.Handle))^.window);;
FLib.libvlc_media_player_set_hwnd(FPlayer, @w, @FException); Dann kommt folgende Meldung: Zitat:
Edit01: VLC ist anscheint so schlau es dann in einem Externen Fenster da zustellen, was jedoch nicht beendet werden kann. Edit02: Auch wenn ich libvlc_media_player_set_xwindow verwende gibt es den Fehler. |
Re: LibVLC - VLC in Delphi nutzen
An die FreePascaler hab ich wieder nicht gedacht. Hab jetzt ein $Mode Delphi vorn angestellt. Und es funktioniert sogar. :)
Was deine anderen Probleme angeht: keine Ahnung was da schief läuft. Ich hab gerade mal schnell eine One-Panel-Test-App unter Lazarus zusammengeklickt .... es funktioniert. |
Re: LibVLC - VLC in Delphi nutzen
Verwendest du das unter Windows ? Unter Linux kann ich es keinem Panel zuordnen. Nur in einem Externen Fenster. Das VLC-Control(oder wie das hieß) lief, nach einigen Anpassungen. Ich habe auch noch eine ältere Version. Weil ich Debian verwende.
Das Problem ist: Die XID ist immer 0. In einem anderen Projekt kann ich sie so erzeugen. Wenn ich die HWND Methode verwende geht es auch nicht unter Linux. Ach ja: Für Linux muss die Unit angepasst werden. Z.B. die Unit Windows muss rauß. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz