Ich möchte mich mal wieder mit meinem Mediaplayer beschäftigen.
Bisher habe ich die "mciSendString_" Funktionen genutzt.
Hat funktioniert, aber wirklich zufrieden bin ich damit nicht.
Nun habe ich immer wieder von den "vlc" Funktionen gehört und möchte die mal ausprobieren.
Dazu habe ich mir die Datei "vlc-3.0.21-win64.zip" bei vlc besorgt und in dem Ordner "c:\vlc\" entpackt. Darin befinden sich u.a. die Dateien "libvlc.dll" und "libvlccore.dll". Ich habe gelesen, die werden benötigt. Darin verbergen sich die Media- Funktionen.
Nun tue ich mich leider verdammt schwer damit.
Darum stelle ich hier mal ein Grundgerüst hinein in der Hoffnung, das mir jemannd die "vlc" Funktionen ergänzen kann.
Ich lerne am besten an funktionierende Beispiele an denen ich mich dann so richtig austoben kann.
Darum meine Hoffnung, das Ihr mir weiter helft.
Ich bedanke mich schon mal im voraus. Vielen Dank.
BSP.
Code: Alles auswählen
;EnableExplicit
#VLC_Pfad = "C:\vlc" ; <<< ANPASSEN an dein System
Global libVLC, vlcInstance, vlcPlayer, videoPfad.s
videoPfad = OpenFileRequester("Video auswählen", "", "", 0)
Procedure StartVLC(videoFile.s, hwnd)
If libVLC = 0
libVLC = OpenLibrary(0, #VLC_Pfad + "\libvlc.dll")
;Debug #VLC_Pfad + "\libvlc.dll"
Debug libVLC
If libVLC = 0
MessageRequester("Fehler", "Konnte libvlc.dll nicht laden!")
End
Else
Debug "libVLC geladen: " + Str(libVLC)
EndIf
EndIf
; LibVLC initialisieren
vlcInstance = CallFunction(libVLC, "libvlc_new", 0, #Null) ; <<< Hier bekomme ich immer einen Fehler.
If vlcInstance = 0
Debug "Fehler: vlcInstance = 0"
MessageRequester("Fehler", "Fehler beim Initialisieren von libVLC!")
Else
Debug "LibVLC erfolgreich initialisiert!"
EndIf
vlcPlayer = CallFunction(libVLC, "libvlc_media_player_new", vlcInstance)
Debug vlcPlayer
If vlcPlayer
; Video-Datei laden
Define media = CallFunctionFast(GetFunction(libVLC, "libvlc_media_new_path"), vlcInstance, @videoFile)
Debug media
CallFunction(libVLC, "libvlc_media_player_set_media", vlcPlayer, media)
; In PureBasic-Fenster rendern (HWND)
CallFunction(libVLC, "libvlc_media_player_set_hwnd", vlcPlayer, hwnd)
; Video abspielen
CallFunction(libVLC, "libvlc_media_player_play", vlcPlayer)
EndIf
EndProcedure
Procedure StopVLC()
If vlcPlayer
CallFunction(libVLC, "libvlc_media_player_stop", vlcPlayer)
CallFunction(libVLC, "libvlc_media_player_release", vlcPlayer)
EndIf
If vlcInstance
CallFunction(libVLC, "libvlc_release", vlcInstance)
EndIf
If libVLC
CloseLibrary(0)
libVLC = 0
EndIf
EndProcedure
; Fenster erstellen
If OpenWindow(0, 100, 100, 800, 600, "VLC in PureBasic", #PB_Window_SystemMenu)
CanvasGadget(0, 50, 50, 640, 480)
ButtonGadget(1, 50, 550, 100, 30, "Play Video")
ButtonGadget(2, 200, 550, 100, 30, "Stop")
Repeat
Define Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ; Play Button
StartVLC(videoPfad, GadgetID(0))
Case 2 ; Stop Button
StopVLC()
EndSelect
Case #PB_Event_CloseWindow
StopVLC()
Break
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf