Differenze tra le versioni di "Estrarre informazioni da un file MP3 con le funzioni esterne del API di libmpeg3"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Con alcune risorse della libreria esterna "''libmpeg3''" è possibile ottenere alcune informazioni strettamente relative a un file mp3. E' necessario avere installata nel si...")
 
 
(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Con alcune risorse della libreria esterna "''libmpeg3''" è possibile ottenere alcune informazioni strettamente relative a un  file mp3.
 
Con alcune risorse della libreria esterna "''libmpeg3''" è possibile ottenere alcune informazioni strettamente relative a un  file mp3.
  
E' necessario avere installata nel sistema operativo e richiamare nel programma Gambas la libreria dinamica condivisa: ''libmpeg3.so''
+
E' necessario avere installata nel sistema operativo e richiamare nel programma Gambas la libreria condivisa: "''libmpeg3.so.2.1.8'' ".
 
 
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
  Library "libmpeg3"
+
  Library "libmpeg3:2.1.8"
 +
 +
Public Struct mpeg3_t
 +
  fs As Pointer
 +
  demuxer As Pointer
 +
  total_astreams As Integer
 +
  atrack[&010000] As Pointer
 +
  total_vstreams As Integer
 +
  vtrack[&010000] As Pointer
 +
  total_sstreams As Integer
 +
  strack[&010000] As Pointer
 +
  frame_offsets As Pointer
 +
  sample_offsets As Pointer
 +
  keyframe_numbers As Pointer
 +
  video_eof As Pointer
 +
  audio_eof As Pointer
 +
  total_frame_offsets As Pointer
 +
  total_sample_offsets As Pointer
 +
  total_samples As Pointer
 +
  total_keyframe_numbers As Pointer
 +
  channel_counts As Pointer
 +
  indexes As Pointer
 +
  total_indexes As Integer
 +
  index_bytes As Long
 +
  is_transport_stream As Integer
 +
  is_program_stream As Integer
 +
  is_ifo_file As Integer
 +
  is_audio_stream As Integer
 +
  is_video_stream As Integer
 +
  is_bd As Integer
 +
  packet_size As Integer
 +
  last_type_read As Integer
 +
  last_stream_read As Integer
 +
  subtitle_track As Integer
 +
  program As Integer
 +
  cpus As Integer
 +
  seekable As Integer
 +
  toc_fd As Pointer
 +
  byte_pts As Long
 +
  have_palette As Integer
 +
  palette[64] As Byte
 +
  source_date As Long
 +
End Struct
 
   
 
   
 
  <FONT Color=gray>' ''int mpeg3_check_sig(char *path)''
 
  <FONT Color=gray>' ''int mpeg3_check_sig(char *path)''
Riga 13: Riga 54:
 
  <FONT Color=gray>' ''mpeg3_t* mpeg3_open(char *path, int *error_return)''
 
  <FONT Color=gray>' ''mpeg3_t* mpeg3_open(char *path, int *error_return)''
 
  ' ''Open the MPEG stream.''</font>
 
  ' ''Open the MPEG stream.''</font>
  Private Extern mpeg3_open(path As String, error_return As Pointer) As Pointer
+
  Private Extern mpeg3_open(path As String, error_return As Pointer) As mpeg3_t
 
   
 
   
 
  <FONT Color=gray>' ''int64_t mpeg3_get_bytes(mpeg3_t *file)''
 
  <FONT Color=gray>' ''int64_t mpeg3_get_bytes(mpeg3_t *file)''
 
  ' ''Total bytes.''</font>
 
  ' ''Total bytes.''</font>
  Private Extern mpeg3_get_bytes(mpeg3file As Pointer) As Long
+
  Private Extern mpeg3_get_bytes(mpeg3file As mpeg3_t) As Long
 
   
 
   
 
  <FONT Color=gray>' ''int mpeg3_audio_channels(mpeg3_t *file, int stream)''</font>
 
  <FONT Color=gray>' ''int mpeg3_audio_channels(mpeg3_t *file, int stream)''</font>
  Private Extern mpeg3_audio_channels(mpeg3file As Pointer, _stream As Integer) As Integer
+
  Private Extern mpeg3_audio_channels(mpeg3file As mpeg3_t, _stream As Integer) As Integer
 
   
 
   
 
  <FONT Color=gray>' ''int mpeg3_sample_rate(mpeg3_t *file, int stream)''</font>
 
  <FONT Color=gray>' ''int mpeg3_sample_rate(mpeg3_t *file, int stream)''</font>
  Private Extern mpeg3_sample_rate(mpeg3file As Pointer, _stream As Integer) As Integer
+
  Private Extern mpeg3_sample_rate(mpeg3file As mpeg3_t, _stream As Integer) As Integer
 
   
 
   
 
  <FONT Color=gray>' ''char* mpeg3_audio_format(mpeg3_t *file, int stream)''</font>
 
  <FONT Color=gray>' ''char* mpeg3_audio_format(mpeg3_t *file, int stream)''</font>
  Private Extern mpeg3_audio_format(mpeg3file As Pointer, _stream As Integer) As Pointer
+
  Private Extern mpeg3_audio_format(mpeg3file As mpeg3_t, _stream As Integer) As Pointer
 
   
 
   
 
  <FONT Color=gray>' ''long mpeg3_audio_samples(mpeg3_t *file, int stream)''</font>
 
  <FONT Color=gray>' ''long mpeg3_audio_samples(mpeg3_t *file, int stream)''</font>
  Private Extern mpeg3_audio_samples(mpeg3file As Pointer, _stream As Integer) As Long
+
  Private Extern mpeg3_audio_samples(mpeg3file As mpeg3_t, _stream As Integer) As Long
 
   
 
   
 
  <FONT Color=gray>' ''int mpeg3_close(mpeg3_t *file)''</font>
 
  <FONT Color=gray>' ''int mpeg3_close(mpeg3_t *file)''</font>
  Private Extern mpeg3_close(mpeg3file As Pointer) As Integer
+
  Private Extern mpeg3_close(mpeg3file As mpeg3_t) As Integer
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim perc As String
 
   Dim perc As String
 
   Dim i, freq As Integer
 
   Dim i, freq As Integer
 
   Dim cmp As Long
 
   Dim cmp As Long
   Dim mp3 As Pointer
+
   Dim mp3 As mpeg3_t
 
    
 
    
   perc = "<FONT Color=gray>''/percorso/del/file.mp3''</font>"
+
   perc = "<FONT Color=darkgreen>''/percorso/del/file.mp3''</font>"
 
    
 
    
 
   i = mpeg3_check_sig(perc)
 
   i = mpeg3_check_sig(perc)
Riga 48: Riga 89:
 
    
 
    
 
   mp3 = mpeg3_open(perc, 0)
 
   mp3 = mpeg3_open(perc, 0)
 
 
  i = mpeg3_total_astreams(mp3)
 
 
    
 
    
 
   Print "File audio:    "; perc
 
   Print "File audio:    "; perc
Riga 58: Riga 97:
 
   Print "Formato audio:  "; String@(mpeg3_audio_format(mp3, 0))
 
   Print "Formato audio:  "; String@(mpeg3_audio_format(mp3, 0))
 
   cmp = mpeg3_audio_samples(mp3, 0)
 
   cmp = mpeg3_audio_samples(mp3, 0)
   Print "Campioni audio: "; cmp
+
   Print "Campioni audio: "; cmp; " byte (per ciascun canale)"
   Print "Durata:        "; CStr(Date(0, 0, 0, 0, 0, 0, (cmp / freq) * 1000))
+
   Print "Durata:        "; CStr(Time(0, 0, 0, (cmp / freq) * 1000))
 
    
 
    
 
   mpeg3_close(mp3)
 
   mpeg3_close(mp3)
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 04:02, 19 giu 2024

Con alcune risorse della libreria esterna "libmpeg3" è possibile ottenere alcune informazioni strettamente relative a un file mp3.

E' necessario avere installata nel sistema operativo e richiamare nel programma Gambas la libreria condivisa: "libmpeg3.so.2.1.8 ".

Mostriamo un semplice esempio:

Library "libmpeg3:2.1.8"

Public Struct mpeg3_t
  fs As Pointer
  demuxer As Pointer
  total_astreams As Integer
  atrack[&010000] As Pointer
  total_vstreams As Integer
  vtrack[&010000] As Pointer
  total_sstreams As Integer
  strack[&010000] As Pointer
  frame_offsets As Pointer
  sample_offsets As Pointer
  keyframe_numbers As Pointer
  video_eof As Pointer
  audio_eof As Pointer
  total_frame_offsets As Pointer
  total_sample_offsets As Pointer
  total_samples As Pointer
  total_keyframe_numbers As Pointer
  channel_counts As Pointer
  indexes As Pointer
  total_indexes As Integer
  index_bytes As Long
  is_transport_stream As Integer
  is_program_stream As Integer
  is_ifo_file As Integer
  is_audio_stream As Integer
  is_video_stream As Integer
  is_bd As Integer
  packet_size As Integer
  last_type_read As Integer
  last_stream_read As Integer
  subtitle_track As Integer
  program As Integer
  cpus As Integer
  seekable As Integer
  toc_fd As Pointer
  byte_pts As Long
  have_palette As Integer
  palette[64] As Byte
  source_date As Long
End Struct

' int mpeg3_check_sig(char *path)
' Check for file compatibility.
Private Extern mpeg3_check_sig(path As String) As Integer

' mpeg3_t* mpeg3_open(char *path, int *error_return)
' Open the MPEG stream.
Private Extern mpeg3_open(path As String, error_return As Pointer) As mpeg3_t

' int64_t mpeg3_get_bytes(mpeg3_t *file)
' Total bytes.
Private Extern mpeg3_get_bytes(mpeg3file As mpeg3_t) As Long

' int mpeg3_audio_channels(mpeg3_t *file, int stream)
Private Extern mpeg3_audio_channels(mpeg3file As mpeg3_t, _stream As Integer) As Integer

' int mpeg3_sample_rate(mpeg3_t *file, int stream)
Private Extern mpeg3_sample_rate(mpeg3file As mpeg3_t, _stream As Integer) As Integer

' char* mpeg3_audio_format(mpeg3_t *file, int stream)
Private Extern mpeg3_audio_format(mpeg3file As mpeg3_t, _stream As Integer) As Pointer

' long mpeg3_audio_samples(mpeg3_t *file, int stream)
Private Extern mpeg3_audio_samples(mpeg3file As mpeg3_t, _stream As Integer) As Long

' int mpeg3_close(mpeg3_t *file)
Private Extern mpeg3_close(mpeg3file As mpeg3_t) As Integer


Public Sub Main()
 
 Dim perc As String
 Dim i, freq As Integer
 Dim cmp As Long
 Dim mp3 As mpeg3_t
 
 perc = "/percorso/del/file.mp3"
  
 i = mpeg3_check_sig(perc)
 If i = 0 Then Error.Raise("Tipo file incompatibile !")
  
 mp3 = mpeg3_open(perc, 0)
  
 Print "File audio:     "; perc
 Print "Dimensione:     "; mpeg3_get_bytes(mp3); " byte"
 Print "Numero canali:  "; mpeg3_audio_channels(mp3, 0)
 freq = mpeg3_sample_rate(mp3, 0)
 Print "Frequenza:      "; freq; " hertz"
 Print "Formato audio:  "; String@(mpeg3_audio_format(mp3, 0))
 cmp = mpeg3_audio_samples(mp3, 0)
 Print "Campioni audio: "; cmp; " byte (per ciascun canale)"
 Print "Durata:         "; CStr(Time(0, 0, 0, (cmp / freq) * 1000))
 
 mpeg3_close(mp3)
 
End