Differenze tra le versioni di "Eseguire un DVD video mediante le risorse del Componente gb.media"

Da Gambas-it.org - Wikipedia.
 
Riga 5: Riga 5:
  
 
==Uso della sola Classe ''MediaPlayer''==
 
==Uso della sola Classe ''MediaPlayer''==
L'utilizzo della sola Classe ''MediaPipeline'' del Componente ''gb.media'' prevede l'uso del plug-in "''playbin''".
 
 
 
Mostriamo un semplice esempio, nel quale imposteremo come file-device del lettore DVD il percorso "''/dev/cdrom''".
 
Mostriamo un semplice esempio, nel quale imposteremo come file-device del lettore DVD il percorso "''/dev/cdrom''".
 
  Private bo As Boolean
 
  Private bo As Boolean

Versione attuale delle 15:23, 13 set 2024

E' possibile eseguire una traccia di un DVD video mediante il Componente gb.media di Gambas, utilizzando alcune sue risorse.

Va precisato che è opportuno specificare il corretto file-device del lettore DVD da assegnare alla proprietà .URL delle Classi appresso utilizzate del Componente gb.media.


Uso della sola Classe MediaPlayer

Mostriamo un semplice esempio, nel quale imposteremo come file-device del lettore DVD il percorso "/dev/cdrom".

Private bo As Boolean


Public Sub Main()
 
 Dim mp As MediaPlayer

 With mp = New MediaPlayer
   .URL = "dvd:///dev/cdrom"
   .Play
 End With
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati video processati:
   Write "\rDurata del video: " & CStr(Time(0, 0, 0, mp.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, mp.Position * 1000))
   Flush
   Wait 0.01
 Until (mp.Position >= mp.Duration) Or (bo = True)

 mp.Stop
 mp.Close
  
 Quit
  
End


Public Sub Application_Read()   ' Premendo il tasto "Invio" della tastiera, si arresta il programma

 bo = True
  
End


Uso della sola Classe MediaPipeline

L'utilizzo della sola Classe MediaPipeline del Componente gb.media prevede l'uso del plug-in "playbin".

Mostriamo un semplice esempio, nel quale imposteremo come file-device del lettore DVD il percorso "/dev/cdrom".

Public Sub Main()

 Dim pl As MediaPipeline
 
 pl = New MediaPipeline(Null, "playbin")
 pl["uri"] = "dvd:///dev/cdrom"
  
 pl.Play()
  
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati video processati:
   Write "\rDurata del video: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Flush
   Wait 0.01
 Until (pl.Position >= pl.Duration) Or (bo = True)

 pl.Stop
 pl.Close
 
End


Uso della Classe MediaPipeline e della Classe MediaControl

L'esecuzione di una traccia può essere effettuata anche utilizzando le Classi MediaPipeline e MediaControl del Componente gb.media.

Mostriamo un semplice esempio, nel quale imposteremo come file-device del lettore DVD il percorso "/dev/cdrom".

Public Sub Main()

 Dim pl As MediaPipeline
 Dim src As MediaControl
  
 pl = New MediaPipeline
  
 src = New MediaControl(pl, "playbin")
 src["uri"] = "dvd:///dev/cdrom"
 
 pl.Play()
 
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati video processati:
   Write "\rDurata del video: " & CStr(Time(0, 0, 0, pl.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, pl.Position * 1000))
   Flush
   Wait 0.01
 Until (pl.Position >= pl.Duration) Or (bo = True)

 pl.Stop
 pl.Close
  
End


Uso delle Classi MediaPlayer e MediaControl e del plug-in jackaudiosink

L'uso delle Classi MediaPlayer e MediaControl e del plug-in jackaudiosink richiede che sia preliminarmente avviato il programma server Jack.

Mostriamo un esempio, nel quale imposteremo come file-device del lettore DVD il percorso "/dev/cdrom".

Public Sub Main()

 Dim mp As MediaPlayer
 Dim usc As MediaControl
     
 With mp = New MediaPlayer
   .URL = "dvd:///dev/cdrom"
 End With
  
 usc = New MediaControl(mp, "jackaudiosink")
 mp.Audio.Output = usc
 
 mp.Play()
  
 Repeat
' Mostra in console la posizione, espressa in secondi, all'interno dei dati video processati:
   Write "\rDurata del video: " & CStr(Time(0, 0, 0, mp.Duration * 1000)) & "   -   Tempo trascorso: " & CStr(Time(0, 0, 0, mp.Position * 1000))
   Flush
   Wait 0.01
 Until (mp.Position >= mp.Duration) Or (bo = True)
  
 mp.Stop
 mp.Close
    
End