Estrarre informazioni e TAG da un file audio con le funzioni esterne del API di VLC

Da Gambas-it.org - Wikipedia.

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 condivisa: "libvlc.so.5.6.1 ".


Mostriamo un semplice esempio pratico:

Library "libvlc:5.6.1"

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


Riferimenti