Differenze tra le versioni di "Mostrare un segnale di test video mediante il Componente gb.media"
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 38: | Riga 38: | ||
Volendo invece ottenere un effetto di test video-audio, si potranno utilizzare due ''Pipeline'' di GStreamer: una dedicata alla gestione del test video, che sarà mostrato in una finestra esterna automaticamente generata dalle risorse di ''GStreamer''; l'altra è invece dedicata alla gestione del test audio, per il quale sarà emesso un tono continuo. | Volendo invece ottenere un effetto di test video-audio, si potranno utilizzare due ''Pipeline'' di GStreamer: una dedicata alla gestione del test video, che sarà mostrato in una finestra esterna automaticamente generata dalle risorse di ''GStreamer''; l'altra è invece dedicata alla gestione del test audio, per il quale sarà emesso un tono continuo. | ||
− | + | ||
+ | Mostriamo un esempio questa volta con un'applicazione ''a riga di comando'': | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Riga 67: | Riga 68: | ||
Loop | Loop | ||
+ | '''End''' | ||
+ | Il precedente codice, ma il test-video sarà dinamico e verrà mostrato all'interno di una "DrawingArea" usando il Metodo ".SetWindow()" della Classe ''MediaControl'': | ||
+ | '''Public''' Sub Button1_Click() | ||
+ | |||
+ | Dim pl1, pl2 As Mediapipeline | ||
+ | Dim src1, src2, con, res, snk1, snk2 As MediaControl | ||
+ | |||
+ | <FONT Color=gray>' ''"Pipeline" dedicata al video:''</font> | ||
+ | pl1 = New MediaPipeline | ||
+ | src1 = New MediaControl(pl1, "videotestsrc") | ||
+ | src1["is-live"] = True | ||
+ | src1["horizontal-speed"] = 1 | ||
+ | snk1 = New MediaControl(pl1, "xvimagesink") | ||
+ | src1.LinkTo(snk1) | ||
+ | snk1<FONT Color=#B22222>.SetWindow</font>(drawingArea1) | ||
+ | |||
+ | <FONT Color=gray>' ''"Pipeline" dedicata all'audio:''</font> | ||
+ | pl2 = New MediaPipeline | ||
+ | src2 = New MediaControl(pl2, "audiotestsrc") | ||
+ | con = New MediaControl(pl2, "audioconvert") | ||
+ | res = New MediaControl(pl2, "audioresample") | ||
+ | snk2 = New MediaControl(pl2, "autoaudiosink") | ||
+ | src2.LinkTo(con) | ||
+ | con.LinkTo(res) | ||
+ | res.LinkTo(snk2) | ||
+ | |||
+ | pl1.play() | ||
+ | pl2.play() | ||
+ | |||
+ | Do | ||
+ | Wait 0.01 | ||
+ | Loop | ||
+ | |||
'''End''' | '''End''' |
Versione attuale delle 09:28, 23 ago 2022
Per mostrare un segnale di test video mediante il Componente gb.media all'interno della superficie di un oggetto posto sul Form, è possibile adottare il seguente semplice codice:
Private pl As MediaPipeline Public Sub Form_Open() Dim da As DrawingArea Dim src, xim As MediaControl ' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita video: With da = New DrawingArea(Me) .X = 10 .Y = 10 .W = 320 .H = 240 .Background = Color.Transparent End With pl = New MediaPipeline src = New MediaControl(pl, "videotestsrc") xim = New MediaControl(pl, "ximagesink") ' Imposta la superficie dell'Oggetto, ove sarà mostrato il segnale di controllo video: xim.SetWindow(da) src.LinkTo(xim) End Public Sub Button1_Click() pl.Play() End
Volendo invece ottenere un effetto di test video-audio, si potranno utilizzare due Pipeline di GStreamer: una dedicata alla gestione del test video, che sarà mostrato in una finestra esterna automaticamente generata dalle risorse di GStreamer; l'altra è invece dedicata alla gestione del test audio, per il quale sarà emesso un tono continuo.
Mostriamo un esempio questa volta con un'applicazione a riga di comando:
Public Sub Main() Dim pl1, pl2 As Mediapipeline Dim src1, src2, con, res, snk1, snk2 As MediaControl ' "Pipeline" dedicata al video: pl1 = New MediaPipeline src1 = New MediaControl(pl1, "videotestsrc") snk1 = New MediaControl(pl1, "ximagesink") src1.LinkTo(snk1) ' "Pipeline" dedicata all'audio: pl2 = New MediaPipeline src2 = New MediaControl(pl2, "audiotestsrc") con = New MediaControl(pl2, "audioconvert") res = New MediaControl(pl2, "audioresample") snk2 = New MediaControl(pl2, "alsasink") src2.LinkTo(con) con.LinkTo(res) res.LinkTo(snk2) pl1.play() pl2.play() Do Wait 0.01 Loop End
Il precedente codice, ma il test-video sarà dinamico e verrà mostrato all'interno di una "DrawingArea" usando il Metodo ".SetWindow()" della Classe MediaControl:
Public Sub Button1_Click() Dim pl1, pl2 As Mediapipeline Dim src1, src2, con, res, snk1, snk2 As MediaControl ' "Pipeline" dedicata al video: pl1 = New MediaPipeline src1 = New MediaControl(pl1, "videotestsrc") src1["is-live"] = True src1["horizontal-speed"] = 1 snk1 = New MediaControl(pl1, "xvimagesink") src1.LinkTo(snk1) snk1.SetWindow(drawingArea1) ' "Pipeline" dedicata all'audio: pl2 = New MediaPipeline src2 = New MediaControl(pl2, "audiotestsrc") con = New MediaControl(pl2, "audioconvert") res = New MediaControl(pl2, "audioresample") snk2 = New MediaControl(pl2, "autoaudiosink") src2.LinkTo(con) con.LinkTo(res) res.LinkTo(snk2) pl1.play() pl2.play() Do Wait 0.01 Loop End