Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

libVLC 4 FB

Projektzusammenfassung
Projekt-Maintainer:Mitgliedgrindstone Projektseite angelegt:11.10.2015
Lizenzierung:LGPL Letzte Bearbeitung:16.10.2015
Projektkategorie:Multimedia      [Zurück zur Übersicht]

Schon öfter wurde im Forum die Frage gestellt: "Wie kann ich mit freeBasic eine Mediendatei abspielen?"

Hier ist nun eine (weitere) mögliche Antwort, zunächst als Beta - Version: Externer Link!libVLC, die eierlegende Wollmilchsau unter den Open Source Mediaplayern, zur Nutzung mit FB. Ich habe versucht, das ganze als "rundum - sorglos - Paket" zu gestalten: Installieren -> aufrufen -> läuft. In dem Installationspaket sind alle benötigten Dateien enthalten. Keine zusätzlichen Downloads von anderen Webseiten, keine Installation von irgendeinem anderen Programm als Voraussetzung, keine Versionskonflikte. Ob das gelungen ist, wird sich zeigen.

Die freeBasic - Installation enthält bereits eine Sammlung von VLC - Headerdateien, deren Portierung allerdings -so mein Eindruck- nicht beendet wurde. Mit diesen Dateien als Grundlage habe ich die Portierung fortgeführt und auf den Stand von libVLC - Version 2.1.5 gebracht. Da ich das komplett von Hand gemacht habe, hat sich mit Sicherheit der eine oder andere Fehler eingeschlichen (darum erst mal Beta). Ich bitte daher um entsprechende Hinweise an den Externer Link!zugehörigen Forum - Thread.

Ein installierter VLC - Player auf dem Zielsystem ist nicht notwendig, stört aber auch nicht.

Nutzung der Headerbibliothek

Zunächst ein Hinweis: Wer die libVLC - API benutzen möchte, sollte sich einigermaßen mit Pointern auskennen, da die Kommunikation mit den API - Funktionen in beide Richtungen fast ausschließlich über Pointer erfolgt.

Installation:

1) Externer Link!http://users.freebasic-portal.de/grindstone/libVLC4FB/VLC4FB.zip herunterladen.
2) Zip - Archiv entpacken
3) <FB-Installationspfad>\inc\vlc umbenennen, beispielsweise in vlc_alt
4) Ordner vlc aus dem Archiv nach <FB-Installationspfad>\inc\ kopieren

fertig.

Inhalt:
Im Verzeichnis vlc befinden sich die übersetzten Headerbibliotheken (.bi), deren Originale (.h) sowie noch einige weitere Dateien:

Im Unterverzeichnis examples befindet sich neben der englischen Version des weiter unten aufgelisteten Beispielprogramms die Datei libvlccore.dll

Das Unterverzeichnis plugins enthält die VLC - Plugins, die zum Abspielen der verschiedenen Mediendateien notwendig sind.

Im Unterverzeichnis tools finden sich veschiedene Hilfsprogramme, die beim Erstellen dieses Projekts behilflich waren:

Erste Schritte

Ob die Installation gelungen ist, kann mit diesem kleinen Programm getestet werden. Damit das Programm laufen kann, muß sich die Datei libvlccore.dll (zu finden in <FB-Installationspfad>\inc\vlc\examples) im selben Verzeichnis wie das compilierte Programm oder im Suchpfad (PATH - Umgebungsvariable) befinden.

'Beispiel für ein SEHR einfaches Abspielprogramm unter Verwendung von libVLC

#define VLCpath "C:\Programme\freeBasic-1_03_0\inc\vlc" 'Durch den Pfad ersetzen, in dem
                         'sich die "libvlc.dll.a" und das "plugin" - Verzeichnis befinden
#LibPath VLCpath
#Include "vlc\vlc.bi" 'libVLC Headerdateien einbinden

Dim instance As libvlc_instance_t Ptr
Dim media As libvlc_media_t Ptr
Dim mediaPlayer As libvlc_media_player_t Ptr
Dim myMediaFile As String

Print "libVLC version: "; *libvlc_get_version() 'Verwendete libVLC - Version
Print

SetEnviron ("VLC_PLUGIN_PATH=" + VLCpath + "\plugins")
Print "Plugin path: "; Environ ("VLC_PLUGIN_PATH")
Print

instance = libvlc_new (0, NULL) 'VLC - Instanz erzeugen
If instance = 0 Then
    Print "*** libVLC initialisation failed ***"
    Print "press any key"
    Sleep
  End
EndIf

myMediaFile = "C:\myTestingMediaFile.mp3" 'Durch die abzuspielende Mediendatei ersetzen. Kann
                      ' jede Datei sein (Audio oder Video), die libVLC verarbeiten kann (d.h.
                      ' für die ein funktionierendes Plugin existiert).
Print "Media file: ";myMediaFile
Print
media = libvlc_media_new_path(instance, myMediaFile) 'Mediendatei laden
mediaPlayer = libvlc_media_player_new_from_media(media) 'Mediaplayer - Umgebung erzeugen
libvlc_media_release(media) 'Mediendatei entladen
libvlc_media_player_play(mediaPlayer) 'Wiedergabe starten

Print "     press any key to quit"
Sleep 'Wartet auf Tastendruck

libvlc_media_player_stop(mediaPlayer) 'Wiedergabe beenden
libvlc_media_player_release(mediaPlayer) 'Mediaplayer - Umgebung freigeben
libvlc_release(instance) 'VLC - Instanz entladen

Beispiele zur Anwendung einiger VLC - API - Funktionen

libvlc_video_filter_list_get
libvlc_audio_filter_list_get
Liefert eine Liste der verfügbaren Video- bzw. Audiofilter.

Rückgabewert ist ein Pointer auf den ersten Record einer verketteten Liste.

#Include "vlc\vlc.bi"

Dim instance As libvlc_instance_t Ptr
Dim As libvlc_module_description_t Ptr filterListPtr

'Umgebungsvariable mit Pfad auf Plugin - Liste setzen
SetEnviron ("VLC_PLUGIN_PATH=C:\Programme\freeBasic_1_03_0\inc\vlc\plugins") 'Durch den
                                                  'aktuellen Installationspfad ersetzen
instance = libvlc_new (0, NULL) 'VLC - Instanz erzeugen
If instance = 0 Then
    Print "*** libVLC initialisation failed ***"
    Print "press any key"
    Sleep
  End
EndIf

filterListPtr = libvlc_video_filter_list_get(instance) 'Liste der verfügbaren Videofilter erstellen
'filterListPtr = libvlc_audio_filter_list_get(instance) 'Liste der verfügbaren Audiofilter erstellen

Do
    Print
    Print "    NAME: ";*filterListPtr->psz_name
    Print "KURZNAME: ";*filterListPtr->psz_shortname
    Print "LANGNAME: ";*filterListPtr->psz_longname
    Print "   HILFE: ";*filterListPtr->psz_help

    filterListPtr = filterListPtr->p_next 'Pointer auf den nächsten Record setzen
    Sleep 1000
Loop Until filterListPtr = 0
Print "OK"

libvlc_module_description_list_release(filterListPtr) 'Liste entladen
libvlc_release (instance) 'VLC - Instanz entladen
Sleep

wird fortgesetzt...


Dateimanager
Es wurden bisher keine Sources abgelegt.