Differenze tra le versioni di "Gestione dei file video con le funzioni esterne delle API di GStreamer"

Da Gambas-it.org - Wikipedia.
 
(28 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
==Uso dell'<I>Elemento</i> di ''GStreamer'' per la gestione video==
+
#REDIRECT [[La_gestione_del_video_e_dei_file_video_con_le_funzioni_esterne_del_API_di_GStreamer]]
Per gestire dati video, caricati ad esempio da un file video, mediante le funzioni delle [http://it.wikipedia.org/wiki/Application_programming_interface API] di ''GStreamer'', bisognerà stabilire un concatenamento di almeno due ''Elementi'' di ''GStreamer'': uno per la gestione del sonoro, l'altro per la gestione del video, che andranno appositamente creati.
 
 
 
Facciamo dunque riferimento alle pagine della WIKI, nelle quali è stata descritta [http://www.gambas-it.org/wiki/index.php?title=La_gestione_mediante_le_funzioni_esterne_delle_API_di_GStreamer la gestione del sonoro in ''GStreamer''].
 
 
 
 
 
==Creazione dell'<I>Elemento</i> video mediante apposita funzione esterna==
 
In particolare, dopo la funzione esterna gst_element_factory_make("playbin", "elem") per la creazione dell'<I>Elemento</i> per la gestgione del sonoro, utilizzeremo ancora quella funzione:
 
''GstElement * gst_element_factory_make(const gchar *factoryname, const gchar *name)''
 
alla quale si passerà il nome di un ''Elemento'' fra quelli predisposti da ''GStreamer'' ed una denominazione per l'<I>Elemento</i> appena creato. È possibile passare ''NULL'' come argomento ''name'' per ottenere un unico nome predefinito.
 
Pertanto in Gambas questa funzione esterna sarà così dichiarata:
 
Private Extern gst_element_factory_make(factoryname As String, name As String) As Pointer
 
e la richiameremo in routine ad esempio così:
 
Private imagesink As Pointer
 
 
Public Sub .....()
 
 
imagesink = gst_element_factory_make("xvimagesink", "video")
 
In questo modo il video sarà mostrato in un'apposita finestra, generata da ''GStreamer'', distinta dal ''Form'' o da altra finestra adirettamente appartenente al programma Gambas principale.
 
 
 
 
 
===Mostrare il video sul Form===
 
Per mostrare il video sul ''Form'' dell'applicazione Gambas principale (e dunque non, come nel caso precedente, in una finestra distinta) si dovrà porre un'oggetto capace di supportare il video (ad esempio in Gambas una ''DrawingArea'') e la seguente funzione esterna:
 
''void gst_video_overlay_set_window_handle(GstVideoOverlay *overlay, guintptr handle)''
 
la quale, però è attualmente contenuta nella libreria ''libgstvideo-1.0''.
 
Il parametro ''overlay'' è un pointer che rappresenta l'<I>Elemento</i>sonoro, mentre il parametro ''handle'' è in intero che rappresenta il numero identificativo (''Id'') dell'oggetto, posto sul ''Form'', nel quale si intende mostrare il video. In Gambas, come già accennato, l'oggetto sarà una ''DrawingArea''.
 
Detta funzione sarà in Gambas così dichiarata:
 
Private Extern gst_video_overlay_set_window_handle(overlay As Pointer, id As Integer) In "libgstvideo-1.0"
 
e sarà richiamata in routine ad esempio così:
 
gst_video_overlay_set_window_handle(elem, DrawingArea1.Handle)
 

Versione attuale delle 08:57, 17 giu 2021