Differenze tra le versioni di "Calcolare il bitrate di un file MP3"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | Per conoscere il ''Bitrate'' di un file MP3, è possibile adottare alcune modalità. <SUP>[[[#Note| | + | Per conoscere il ''Bitrate'' di un file MP3, è possibile adottare alcune modalità. <SUP>[[[#Note|nota 1]]]</sup> |
Riga 11: | Riga 11: | ||
==Ottenere il Bitrate Costante di un file MP3== | ==Ottenere il Bitrate Costante di un file MP3== | ||
− | Se il file mp3 posside un ''Bitrate "costante", per ottenerlo è possibile utilizzare il seguente codice: | + | Se il file mp3 posside un ''Bitrate'' "costante", per ottenerlo è possibile utilizzare il seguente codice: |
− | + | Public Sub Main() | |
Dim fileMP3, dati As String | Dim fileMP3, dati As String | ||
Riga 23: | Riga 23: | ||
Print "Bitrate Costante: \e[1m"; BitrateCostante(dati); "\e[0m Kbps" | Print "Bitrate Costante: \e[1m"; BitrateCostante(dati); "\e[0m Kbps" | ||
− | + | End | |
+ | |||
+ | |||
+ | Private Function BitrateCostante(s As String) As Short | ||
− | |||
− | |||
Dim ver_mp3, layer As String | Dim ver_mp3, layer As String | ||
Dim j As Integer | Dim j As Integer | ||
Riga 76: | Riga 77: | ||
Return bitrate | Return bitrate | ||
− | + | End | |
+ | |||
− | + | Private Function EstraeBitRate(Vmpeg As String, layB As String, bitB As Byte) As Short | |
Dim velCamp As Short | Dim velCamp As Short | ||
− | + | ||
If Vmpeg = "1" Then <FONT Color=gray>' ''Nel caso di Mpeg vers. 1''</font> | If Vmpeg = "1" Then <FONT Color=gray>' ''Nel caso di Mpeg vers. 1''</font> | ||
Select Case layB <FONT Color=gray>' ''Verifica il Layer''</font> | Select Case layB <FONT Color=gray>' ''Verifica il Layer''</font> | ||
Riga 250: | Riga 252: | ||
Return velCamp | Return velCamp | ||
− | + | End | |
Versione attuale delle 16:54, 16 feb 2024
Per conoscere il Bitrate di un file MP3, è possibile adottare alcune modalità. [nota 1]
Indice
Calcolare il Bitrate conoscendo la durata del file MP3
Conoscendo la durata di un file mp3, è possibile ottenere (seppur talvolta in modo un po' approssimativo) il Bitrate di quel file audio.
((dimensione * 8) / durata) / 1000 = bitrate in Kbps
Laddove:
- "dimensione " è la dimensione in byte del file mp3;
- "durata " è la durata del file mp3 espressa in secondi.
Ottenere il Bitrate Costante di un file MP3
Se il file mp3 posside un Bitrate "costante", per ottenerlo è possibile utilizzare il seguente codice:
Public Sub Main() Dim fileMP3, dati As String fileMP3 = "/percorso/del/file.mp3" Print "File audio mp3: "; Quote(File.Name(fileMP3)) dati = File.Load(fileMP3) ' Invoca la funzione per ottenere il bitrate costante del file audio MP3: Print "Bitrate Costante: \e[1m"; BitrateCostante(dati); "\e[0m Kbps" End Private Function BitrateCostante(s As String) As Short Dim ver_mp3, layer As String Dim j As Integer Dim vB, lB, brB As Byte Dim bitrate As Short For j = 1 To Len(s) - 1 ' Individua il 1° byte dell'header del frame audio MPEG del file mp3 caricato: If (Asc(s, j) == &FF) And (Asc(s, j + 1) > &F1) And (Asc(s, j + 2) > &0F) Then ' Individua il 2° byte dell'header per estrarre le seguenti informazioni generali sul file mp3: ' - vesione MPEG; ' - layer. ' 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 ' Viene individuato il "Layer" del file mp3: lB = Asc(s, j + 1) And 6 Select Case lB Case 2 layer = "III" Case 4 layer = "II" Case 6 layer = "I" End Select Print "Versione MPEG = "; ver_mp3, "Layer = "; layer ' Si analizza, quindi, il terzo byte per estrarre il "bitrate" del file mp3. Questa informazione è condizionata dalla versione e dal layer del file MPEG. brB = Asc(s, j + 2) And 240 bitrate = EstraeBitRate(ver_mp3, layer, brB) Break Endif Next Return bitrate End Private Function EstraeBitRate(Vmpeg As String, layB As String, bitB As Byte) As Short Dim velCamp As Short If Vmpeg = "1" Then ' Nel caso di Mpeg vers. 1 Select Case layB ' Verifica il Layer Case "I" Select Case bitB Case 16 velCamp = 32 Case 32 velCamp = 64 Case 48 velCamp = 96 Case 64 velCamp = 128 Case 80 velCamp = 160 Case 96 velCamp = 192 Case 112 velCamp = 224 Case 128 velCamp = 256 Case 144 velCamp = 288 Case 160 velCamp = 320 Case 176 velCamp = 352 Case 192 velCamp = 384 Case 208 velCamp = 416 Case 224 velCamp = 448 End Select Case "II" Select Case bitB Case 16 velCamp = 32 Case 32 velCamp = 48 Case 48 velCamp = 56 Case 64 velCamp = 64 Case 80 velCamp = 80 Case 96 velCamp = 96 Case 112 velCamp = 112 Case 128 velCamp = 128 Case 144 velCamp = 160 Case 160 velCamp = 192 Case 176 velCamp = 224 Case 192 velCamp = 256 Case 208 velCamp = 320 Case 224 velCamp = 384 End Select Case "III" Select Case bitB Case 16 velCamp = 32 Case 32 velCamp = 40 Case 48 velCamp = 48 Case 64 velCamp = 56 Case 80 velCamp = 64 Case 96 velCamp = 80 Case 112 velCamp = 96 Case 128 velCamp = 112 Case 144 velCamp = 128 Case 160 velCamp = 160 Case 176 velCamp = 192 Case 192 velCamp = 224 Case 208 velCamp = 256 Case 224 velCamp = 320 End Select End Select Else Select Case layB ' Verifica il Layer Case "I" Select Case bitB Case 16 velCamp = 32 Case 32 velCamp = 48 Case 48 velCamp = 56 Case 64 velCamp = 64 Case 80 velCamp = 80 Case 96 velCamp = 96 Case 112 velCamp = 112 Case 128 velCamp = 128 Case 144 velCamp = 144 Case 160 velCamp = 160 Case 176 velCamp = 176 Case 192 velCamp = 192 Case 208 velCamp = 224 Case 224 velCamp = 256 End Select Case "II" To "III" Select Case bitB Case 16 velCamp = 8 Case 32 velCamp = 16 Case 48 velCamp = 24 Case 64 velCamp = 32 Case 80 velCamp = 40 Case 96 velCamp = 48 Case 112 velCamp = 56 Case 128 velCamp = 64 Case 144 velCamp = 80 Case 160 velCamp = 96 Case 176 velCamp = 112 Case 192 velCamp = 128 Case 208 velCamp = 144 Case 224 velCamp = 320 End Select End Select Endif Return velCamp End
Note
[1] Vedere anche le seguenti pagine:
- La struttura di un file MPEG
- Estrarre informazioni da un file MP3 con le funzioni esterne del API di libmpg123
- Ottenere il bitrate di un file mp3 con le funzioni esterne del API di VLC