Conoscere la frequenza di campionamento dei dati audio di un file MP3
Da Gambas-it.org - Wikipedia.
Versione del 29 set 2022 alle 12:46 di Vuott (Discussione | contributi)
Per conoscere la frequenza di campionamento dei dati audio di un file MP3 mediante le sole risorse di Gambas, è possibile usare il seguente codice:
Public Sub Main() Dim mp3, dati As String mp3 = "/percorso/del/file.mp3" Print "File audio mp3: "; Quote(File.Name(mp3)) dati = File.Load(mp3) Print "\nDimensione: "; Len(dati); " byte" ' Invoca la funzione per ottenere la frequenza di campionamento dei dati audio del file MP3: Print "Frequenza: \e[31m"; VersioneMP3(dati); " hertz" End Private Function VersioneMP3(s As String) As Integer Dim ver_mp3 As String Dim j As Integer Dim vB, frB As Byte For j = 1 To Len(s) - 1 If (Asc(s, j) = 255) And (Asc(s, j + 1) > 241) And (Asc(s, j + 2) > 15) Then ' Individua 2° byte dell'header per estrarre la versione MPEG del file mp3. ' I primi 3 bit più significativi (tutti posti a 1) appartengono con quelli del 1° byte all'identificazione dell'header. ' Viene individuata la versione del file mp3: vB = Asc(s, j + 1) And 24 Select Case vB Case 0 ver_mp3 = "2.5" Case 16 ver_mp3 = "2" Case 24 ver_mp3 = "1" End Select frB = Asc(s, j + 2) And 12 Return EstraeFrequenza(ver_mp3, frB) Exit Endif Next End Private Function EstraeFrequenza(Vmpeg As String, fre As Byte) As Integer Dim frq As Integer Select Case Vmpeg Case "1" ' Nel caso di Mpeg vers. 1 Select Case fre Case 0 frq = 44100 Case 4 frq = 48000 Case 8 frq = 32000 End Select Case "2" ' Nel caso di Mpeg vers. 2 Select Case fre Case 0 frq = 22050 Case 4 frq = 24000 Case 8 frq = 16000 End Select Case "2.5" ' Nel caso di Mpeg vers. 2.5 Select Case fre Case 0 frq = 11025 Case 4 frq = 12000 Case 8 frq = 8000 End Select End Select Return frq End