Differenze tra le versioni di "Estrarre informazioni e TAG da un file OggVorbis con le sole funzioni di Gambas"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 2: | Riga 2: | ||
Un possibile codice è il seguente: | Un possibile codice è il seguente: | ||
− | + | Public Sub Main() | |
Dim ogg, s As String | Dim ogg, s As String | ||
Dim i, n, c As Integer | Dim i, n, c As Integer | ||
− | ogg = "<FONT color= | + | ogg = "<FONT color=darkgreen>''/percorso/del/file.ogg''</font>" |
s = File.Load(ogg) | s = File.Load(ogg) | ||
Riga 59: | Riga 59: | ||
Until n = 0 | Until n = 0 | ||
− | + | End | |
− | + | Private Function Estrazione(t As String, byte As Integer) As String | |
Dim rit As String | Dim rit As String | ||
Riga 73: | Riga 73: | ||
Return rit | Return rit | ||
− | + | End | |
Riga 79: | Riga 79: | ||
=Riferimenti= | =Riferimenti= | ||
− | + | * http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html | |
+ | * https://kid3.sourceforge.io/kid3_en.html#tag3 |
Versione attuale delle 04:07, 24 nov 2023
E' possibile estrarre informazioni generali e TAG da un file OggVorbis con le sole funzioni di Gambas.
Un possibile codice è il seguente:
Public Sub Main() Dim ogg, s As String Dim i, n, c As Integer ogg = "/percorso/del/file.ogg" s = File.Load(ogg) ' Verifica se effettivamente è un file .ogg: If Left(s, 4) <> "OggS" Then Error.Raise("Attenzione ! Il file caricato non è un file OGG !") Print "File ogg: "; ogg Print "\nDimensione: "; Len(s); " byte" Print "Canali: "; Asc(s, 40) ' Estrae la frequenza di campionamento: Print "Frequenza: "; Val("&" & Estrazione(s, 44)); " hertz" ' Estrae il bitrate nominale: Print "Bitrate "; Val("&" & Estrazione(s, 52)) \ 1000; " Kbps" ' Individua il secondo testo "vorbis" nel file: i = InStr(s, "vorbis", InStr(s, "vorbis") + 5) ' Individua il byte che indica il numero di caratteri che compongono la stringa del "Vendor": n = Asc(s, i + 6) ' Avanza con l'indicatore: i += 10 ' Legge la stringa del "Vendor": Print "Vendor: "; Mid(s, i, n) Print "\nCommenti:" ' Avanza con l'indicatore: i += n ' Individua il byte che indica la quantità di "commenti" presenti nel file ogg: n = Asc(s, i) If n = 0 Then Quit ' Avanza con l'indicatore: i += 4 ' Individua il byte che indica il numero di caratteri che compongono la stringa del 1° "Commento": c = Asc(s, i) ' Legge i "commenti": Repeat ' Avanza con l'indicatore: i += 4 ' Legge la stringa di caratteri del "Commento": Print Mid(s, i, c) ' Avanza con l'indicatore: i += c ' Individua il byte che indica il numero di caratteri che compongono la stringa del "Commento": c = Asc(s, i) Dec n Until n = 0 End Private Function Estrazione(t As String, byte As Integer) As String Dim rit As String Dim n As Integer For n = byte To byte - 3 Step -1 rit &= Hex(Asc(t, n), 2) Next Return rit End