Differenze tra le versioni di "Fondere insieme un file video ed un file audio mediante le funzioni esterne del API di VLC"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
 
Fondere insieme un file video ed un file audio può risultare utile soprattuto per attribuire la parte sonora ad un file video muto. Per ottenere questo risultato, è possibile utilizzare alcune risorse del API di VLC.
 
Fondere insieme un file video ed un file audio può risultare utile soprattuto per attribuire la parte sonora ad un file video muto. Per ottenere questo risultato, è possibile utilizzare alcune risorse del API di VLC.
  
A tal scopo è necessario richiamare in Gambas ed avere installa nel proprio sistema la libreria dinamica condivisa: "''libvlc.so.5.6.0''"
+
A tal scopo è necessario richiamare in Gambas ed avere installa nel proprio sistema la libreria condivisa: "''libvlc.so.5.6.1'' ".
 
 
  
 
Vediamo un esempio pratico con applicazione in ambiente grafico, nel quale si opererà su un file video di formato MP4 ed un file audio di formato MP3:
 
Vediamo un esempio pratico con applicazione in ambiente grafico, nel quale si opererà su un file video di formato MP4 ed un file audio di formato MP3:
Riga 8: Riga 7:
 
   
 
   
 
   
 
   
  Library "libvlc:5.6.0"
+
  Library "libvlc:5.6.1"
 
   
 
   
 
  <FONT Color=gray>' ''libvlc_instance_t * libvlc_new (int argc, const char *const *argv)''
 
  <FONT Color=gray>' ''libvlc_instance_t * libvlc_new (int argc, const char *const *argv)''
Riga 51: Riga 50:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   TextBox1.Alignment = Align.Right
 
   TextBox1.Alignment = Align.Right
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
   Dim inst, mp, m As Pointer
 
   Dim inst, mp, m As Pointer
Riga 66: Riga 65:
 
    
 
    
 
  <FONT Color=gray>' ''Vengono impostate le opzioni ed il percorso ove sarà salvato il file video:''</font>
 
  <FONT Color=gray>' ''Vengono impostate le opzioni ed il percorso ove sarà salvato il file video:''</font>
  ss = ["--sout=#transcode{vcodec=mp4v,fps=60,vb=512,width=640,height=480}:standard{access=file,mux=ts,dst=<FONT Color=gray>''/percorso/del/file.mp4''</font>}"]
+
  ss = ["--sout=#transcode{vcodec=mp4v,fps=60,vb=512,width=640,height=480}:standard{access=file,mux=ts,dst=<FONT Color=gray>''/percorso/del/file.mp4''</font>}"]
 
    
 
    
 
  <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>
  argc = 1
+
  argc = 1
 
    
 
    
 
  <FONT Color=gray>' ''Inizializza la libreria VLC:''</font>
 
  <FONT Color=gray>' ''Inizializza la libreria VLC:''</font>
  inst = libvlc_new(argc, ss)
+
  inst = libvlc_new(argc, ss)
  If inst = 0 Then Error.Raise("Impossibile inizializzare la libreria VLC !")
+
  If inst == 0 Then Error.Raise("Impossibile inizializzare la libreria VLC !")
 
    
 
    
 
  <FONT Color=gray>' ''Crea il media player:''</font>
 
  <FONT Color=gray>' ''Crea il media player:''</font>
  mp = libvlc_media_player_new(inst)
+
  mp = libvlc_media_player_new(inst)
  If mp = 0 Then Error.Raise("Impossibile creare il media player !")
+
  If mp == 0 Then Error.Raise("Impossibile creare il media player !")
 
+
 
 
  <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 video (in questo caso di formato MP4), che sarà fuso con il file audio:''</font>
 
  ' ''Nel secondo argomento della funzione va specificato il percorso del file video (in questo caso di formato MP4), che sarà fuso con il file audio:''</font>
  m = libvlc_media_new_path(inst, "<FONT Color=gray>''/percorso/del/file.mp4''</font>")
+
  m = libvlc_media_new_path(inst, "<FONT Color=gray>''/percorso/del/file.mp4''</font>")
  If m = 0 Then Error.Raise("Impossibile creare un oggetto multimediale !")
+
  If m == 0 Then Error.Raise("Impossibile creare un oggetto multimediale !")
 
    
 
    
 
  <FONT Color=gray>' ''Viene aggiunta l'opzione per l'aggiunta del file audio (in questo caso di formato MP3):''</font>
 
  <FONT Color=gray>' ''Viene aggiunta l'opzione per l'aggiunta del file audio (in questo caso di formato MP3):''</font>
  libvlc_media_add_option(m, "<FONT Color=#B22222>input-slave=</font><FONT Color=gray>''/percorso/del/file.mp3''</font>")
+
  libvlc_media_add_option(m, "<FONT Color=#B22222>input-slave=</font><FONT Color=gray>''/percorso/del/file.mp3''</font>")
 
+
 
  libvlc_media_player_set_media(mp, m)
+
  libvlc_media_player_set_media(mp, m)
 
+
 
 
  <FONT Color=gray>' ''Avvia laprocedura di unione dei due file:''</font>
 
  <FONT Color=gray>' ''Avvia laprocedura di unione dei due file:''</font>
  libvlc_media_player_play(mp)
+
  libvlc_media_player_play(mp)
 
+
 
  While bo = False
+
  While bo = False
    TextBox1.Text = Str(Time(0, 0, 0, libvlc_media_player_get_time(mp)))
+
    TextBox1.Text = Str(Time(0, 0, 0, libvlc_media_player_get_time(mp)))
 
  <FONT Color=gray>' ''Il Wait consente di agire su altri oggetti posti sul Form:''</font>
 
  <FONT Color=gray>' ''Il Wait consente di agire su altri oggetti posti sul Form:''</font>
    Wait 0.01
+
    Wait 0.01
  Wend
+
  Wend
 
+
 
 
  <FONT Color=gray>' ''Chiude la libreria VLC ed il programma:''</font>
 
  <FONT Color=gray>' ''Chiude la libreria VLC ed il programma:''</font>
  libvlc_media_player_release(mp)
+
  libvlc_media_player_release(mp)
  libvlc_media_release(m)
+
  libvlc_media_release(m)
  libvlc_release(inst)
+
  libvlc_release(inst)
  Me.Close
+
  Me.Close
 
+
 
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button2_Click()
+
  Public Sub Button2_Click()
 
    
 
    
 
  <FONT Color=gray>' ''Determina la chiusura della libreria VLC e del programma:''</font>
 
  <FONT Color=gray>' ''Determina la chiusura della libreria VLC e del programma:''</font>
 
   bo = True
 
   bo = True
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 17:32, 12 gen 2024

Fondere insieme un file video ed un file audio può risultare utile soprattuto per attribuire la parte sonora ad un file video muto. Per ottenere questo risultato, è possibile utilizzare alcune risorse del API di VLC.

A tal scopo è necessario richiamare in Gambas ed avere installa nel proprio sistema la libreria condivisa: "libvlc.so.5.6.1 ".

Vediamo un esempio pratico con applicazione in ambiente grafico, nel quale si opererà su un file video di formato MP4 ed un file audio di formato MP3:

Private bo As Boolean


Library "libvlc:5.6.1"

' 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_path(libvlc_instance_t *p_instance, const char * path)
' Create a media for a certain file path.
Private Extern libvlc_media_new_path(p_instance As Pointer, path As String) As Pointer

' void libvlc_media_add_option (libvlc_media_t *p_md, const char *psz_options)
' Add an option to the media.
Private Extern libvlc_media_add_option(p_mi As Pointer, psz_options As String)

' 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
 
' void libvlc_media_player_release (libvlc_media_player_t * p_mi)
' Release a media_player after use Decrement the reference count of a media player object.
Private Extern libvlc_media_player_release(p_mi As Pointer)

' void libvlc_media_release (libvlc_media_t *p_md)
' Decrement the reference count of a media descriptor object.
Private Extern libvlc_media_release(p_md As Pointer)

' 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 video As String
 Dim argc As Integer
 
' Vengono impostate le opzioni ed il percorso ove sarà salvato il file video:
 ss = ["--sout=#transcode{vcodec=mp4v,fps=60,vb=512,width=640,height=480}:standard{access=file,mux=ts,dst=/percorso/del/file.mp4}"]
  
' Imposta il valore del 1° argomento della funzione "libvlc_new()":
 argc = 1
  
' Inizializza la libreria VLC:
 inst = libvlc_new(argc, ss)
 If inst == 0 Then Error.Raise("Impossibile inizializzare la libreria VLC !")
  
' Crea il media player:
 mp = libvlc_media_player_new(inst)
 If mp == 0 Then Error.Raise("Impossibile creare il media player !")
 
' Crea un nuovo oggetto multimedia.
' Nel secondo argomento della funzione va specificato il percorso del file video (in questo caso di formato MP4), che sarà fuso con il file audio:
 m = libvlc_media_new_path(inst, "/percorso/del/file.mp4")
 If m == 0 Then Error.Raise("Impossibile creare un oggetto multimediale !")
  
' Viene aggiunta l'opzione per l'aggiunta del file audio (in questo caso di formato MP3):
 libvlc_media_add_option(m, "input-slave=/percorso/del/file.mp3")
 
 libvlc_media_player_set_media(mp, m)
 
' Avvia laprocedura di unione dei due file:
 libvlc_media_player_play(mp)
 
 While bo = False
   TextBox1.Text = Str(Time(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_media_player_release(mp)
 libvlc_media_release(m)
 libvlc_release(inst)
 Me.Close
 
End


Public Sub Button2_Click()
 
' Determina la chiusura della libreria VLC e del programma:
 bo = True
 
End


Riferimenti