Differenze tra le versioni di "Ottenere un file audio da un file Midi con le funzioni esterne del API di VLC"

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
  
  
Mostriamo un esempio pratico in ambiente grafico, in cui da un file Midi si otterrà un file audio di formato ''OggVorbis'':
+
Mostriamo un esempio pratico in ambiente grafico, in cui da un file Midi si otterrà un file audio di formato ''wav'':
 
  Private bo As Boolean
 
  Private bo As Boolean
 
   
 
   
Riga 52: Riga 52:
 
   Dim argc as Integer
 
   Dim argc as Integer
 
      
 
      
  <FONT Color=gray>' ''Vengono impostate le opzioni ed il percorso ove sarà salvato il file audio .ogg:''</font>
+
  <FONT Color=gray>' ''Vengono impostate le opzioni ed il percorso ove sarà salvato il file audio wav:''</font>
   ss = ["--sout=#transcode{acodec=vorb,ab=96,channels=2}:standard{access-file,mux=ogg,dst=/tmp/audio.ogg}"]
+
   ss = ["--sout=#transcode{acodec=s16l,ab=128,samplerate=44100, channels=2}:standard{access-file,mux=wav,dst=/tmp/audio.wav}"]
 
        
 
        
 
  <FONT Color=gray>' ''Imposta il valore del 1° argomento della funzione "libvlc_new()":''</font>
 
  <FONT Color=gray>' ''Imposta il valore del 1° argomento della funzione "libvlc_new()":''</font>
Riga 65: Riga 65:
 
    
 
    
 
  <FONT Color=gray>' ''Crea un nuovo oggetto multimedia.''
 
  <FONT Color=gray>' ''Crea un nuovo oggetto multimedia.''
  ' ''Nel secondo argomento della funzione va specificato il percorso del file Midi da cui ottenere il file audio .ogg:''</font>
+
  ' ''Nel secondo argomento della funzione va specificato il percorso del file Midi da cui ottenere il file audio wav:''</font>
 
   m = libvlc_media_new_location(inst, "file://<FONT Color=gray>''/percorso/del/file.mid''</font>")
 
   m = libvlc_media_new_location(inst, "file://<FONT Color=gray>''/percorso/del/file.mid''</font>")
 
    
 
    
Riga 92: Riga 92:
 
    
 
    
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
==Ottenere altri formati di file audio==
 +
Oltre al formato WAV è possibile ottenere qualche altro formato di file audio.
 +
 +
===Formato audio ''OggVorbis''===
 +
Per ottenere un file audio di formato ''OggVorbis'', è necessario sostituire la stringa delle opzioni con la seguente:
 +
ss = ["--sout=#transcode{acodec=vorb,ab=96,channels=2}:standard{access-file,mux=ogg,dst=/tmp/audio.ogg}"]
  
  

Versione delle 16:05, 3 mag 2016

La libreria VLC consente di poter ottenere un file audio da un file Midi.
E' necessario aver installata nel proprio sistema la risorsa FluidSynth, nonché anche richiamare in Gambas la libreria dinamica condivisa: "libvlc.so.5.4.0"


Mostriamo un esempio pratico in ambiente grafico, in cui da un file Midi si otterrà un file audio di formato wav:

Private bo As Boolean


Library "libvlc:5.4.0"

' 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_location(libvlc_instance_t *p_instance, const char * psz_mrl)
' Create a media with a certain given media resource location, for instance a valid URL.
Private Extern libvlc_media_new_location(p_instance As Pointer, path As String) As Pointer

' libvlc_media_player_t * libvlc_media_player_new(libvlc_instance_t *p_libvlc_instance)
' Create an empty Media Player object.
Private Extern libvlc_media_player_new(p_libvlc_instance As Pointer) As Pointer

' void libvlc_media_player_set_media(libvlc_media_player_t *p_mi, libvlc_media_t *p_md)
' Set the media that will be used by the media_player.
Private Extern libvlc_media_player_set_media(p_md As Pointer, mp As Pointer)

' int libvlc_media_player_play (libvlc_media_player_t * p_mi)
' Play the video file.
Private Extern libvlc_media_player_play(p_mi As Pointer) As Integer

' libvlc_time_t libvlc_media_player_get_time(libvlc_media_player_t * p_mi)
' Get the current movie time (in ms).
Private Extern libvlc_media_player_get_time(p_mi As Pointer) As Integer

' 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 Form_Open()
 
  TextBox1.Alignment = Align.Right
  
End


Public Sub Button1_Click()
 
 Dim inst, mp, m As Pointer
 Dim ss As String[]
 Dim argc as Integer
    
' Vengono impostate le opzioni ed il percorso ove sarà salvato il file audio wav:
  ss = ["--sout=#transcode{acodec=s16l,ab=128,samplerate=44100, channels=2}:standard{access-file,mux=wav,dst=/tmp/audio.wav}"]
     
' Imposta il valore del 1° argomento della funzione "libvlc_new()":
  argc = 1
  
' Inizializza la libreria VLC:
  inst = libvlc_new(argc, ss)
  
' Crea il media player:
  mp = libvlc_media_player_new(inst)
  
' Crea un nuovo oggetto multimedia.
' Nel secondo argomento della funzione va specificato il percorso del file Midi da cui ottenere il file audio wav:
  m = libvlc_media_new_location(inst, "file:///percorso/del/file.mid")
  
  libvlc_media_player_set_media(mp, m)
  
' Avvia la realizzazione del file Midi da parte del media player:
  libvlc_media_player_play(mp)
  
  While bo = False
    TextBox1.Text = Str(Date(0, 0, 0, 0, 0, 0, libvlc_media_player_get_time(mp)))
' Il Wait consente di agire su altri oggetti posti sul Form:
    Wait 0.01
  Wend
   
' Chiude la libreria VLC ed il programma:
  libvlc_release(inst)
  Me.Close
  
End


Public Sub Button2_Click()
  
' Causa l'arresto della registrazione, la chiusura della libreria VLC e del programma:
  bo = True
  
End


Ottenere altri formati di file audio

Oltre al formato WAV è possibile ottenere qualche altro formato di file audio.

Formato audio OggVorbis

Per ottenere un file audio di formato OggVorbis, è necessario sostituire la stringa delle opzioni con la seguente:

ss = ["--sout=#transcode{acodec=vorb,ab=96,channels=2}:standard{access-file,mux=ogg,dst=/tmp/audio.ogg}"]



Riferimenti