Estrarre informazioni e TAG da un file audio con le funzioni esterne del API di VLC
Da Gambas-it.org - Wikipedia.
Versione del 30 lug 2017 alle 18:26 di Vuott (Discussione | contributi)
La libreria LibVLC consente, fra l'altro, di estrarre informazioni dai TAG dei file audio: MP3, OGG, WMA.
E' necessario avere installata nel proprio sistema e richiamare in Gambas la libreria dinamica condivisa: "libvlc.so.5.5.0"
Mostriamo un semplice esempio pratico:
Library "libvlc:5.5.0" Private Enum libvlc_meta_Title = 0, libvlc_meta_Artist, libvlc_meta_Genre, libvlc_meta_Copyright, libvlc_meta_Album, libvlc_meta_TrackNumber, libvlc_meta_Description, libvlc_meta_Rating, libvlc_meta_Date, libvlc_meta_Setting, libvlc_meta_URL, libvlc_meta_Language, libvlc_meta_NowPlaying, libvlc_meta_Publisher, libvlc_meta_EncodedBy, libvlc_meta_ArtworkURL, libvlc_meta_TrackID, libvlc_meta_TrackTotal, libvlc_meta_Director, libvlc_meta_Season, libvlc_meta_Episode, libvlc_meta_ShowName, libvlc_meta_Actors, libvlc_meta_AlbumArtist, libvlc_meta_DiscNumber, libvlc_meta_DiscTotal ' libvlc_instance_t * libvlc_new (int argc, const char *const *argv) ' Create And initialize a libvlc instance. Private Extern libvlc_new(argc As Integer, argv As String[]) As Pointer ' libvlc_media_t * libvlc_media_new_path (libvlc_instance_t *p_instance, const char *path) ' Create a media for a certain file path. Private Extern libvlc_media_new_path(p_instance As Pointer, path As String) As Pointer ' void libvlc_media_parse (libvlc_media_t *p_md) ' Parse a media. Private Extern libvlc_media_parse(p_md As Pointer) ' char * libvlc_media_get_meta (libvlc_media_t *p_md, libvlc_meta_t e_meta) ' Read the meta of the media. Private Extern libvlc_media_get_meta(p_md As Pointer, e_meta As Integer) As String ' void libvlc_media_release (libvlc_media_t *p_md) ' Decrement the reference count of a media descriptor object. Private Extern libvlc_media_release(p_md As Pointer) ' void libvlc_release (libvlc_instance_t * p_instance) ' Decrement the reference count of a libvlc instance, and destroy it if it reaches zero. Private Extern libvlc_release(p_instance As Pointer) Public Sub Main() Dim inst, media As Pointer Dim fileaudio, meta As String Dim info as String[] Dim i As Integer ' Cerca di estrapolare solo i primi nove TAG più interessanti: info = ["Titolo: ", "Artista: ", "Genere: ", "Copyright: ", "Album: ", "Numero traccia: ", "Descrizione: ", "Rating: ", "Data: "] fileaudio = "/percorso/del/file/audio" inst = libvlc_new(0, Null) media = libvlc_media_new_path(inst, fileaudio) libvlc_media_parse(media) ' Cerca di estrapolare i primi nove TAG: For i = 0 To 8 meta = libvlc_media_get_meta(media, i) Print info[i]; meta Next ' Va in chiusura: libvlc_media_release(media) libvlc_release(inst) End