Differenze tra le versioni di "Conoscere la durata di un file video mediante il Componente gb.media"
Da Gambas-it.org - Wikipedia.
(6 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 7: | Riga 7: | ||
==Uso della Classe "MediaPlayer"== | ==Uso della Classe "MediaPlayer"== | ||
Questa modalità utilizza la sola Classe ''MediaPlayer'': | Questa modalità utilizza la sola Classe ''MediaPlayer'': | ||
− | + | Public Sub Main() | |
Dim mp As MediaPlayer | Dim mp As MediaPlayer | ||
With mp = New MediaPlayer | With mp = New MediaPlayer | ||
− | .URL = Media.URL ("<FONT Color= | + | .URL = Media.URL ("<FONT Color=darkgreen>''/percorso/del/file/video''</font>") |
<FONT Color=gray>' ''E' opportuno anteporre la Proprietà ".Video.Enabled = False" prima del Metodo ".Play()", per impedire che appaia per un attimo la finestra del video:''</font> | <FONT Color=gray>' ''E' opportuno anteporre la Proprietà ".Video.Enabled = False" prima del Metodo ".Play()", per impedire che appaia per un attimo la finestra del video:''</font> | ||
.Video.Enabled = False | .Video.Enabled = False | ||
Riga 25: | Riga 25: | ||
End With | End With | ||
− | + | End | |
==Uso delle Classi "MediaPipeline" e "MediaControl"== | ==Uso delle Classi "MediaPipeline" e "MediaControl"== | ||
Questa modalità utilizza le Classi ''MediaPipeline'' e ''MediaControl''. | Questa modalità utilizza le Classi ''MediaPipeline'' e ''MediaControl''. | ||
− | <BR>In particolare usa il | + | <BR>In particolare usa il plugin ''decodebin'' di GStreamer. |
− | + | Public Sub Main() | |
Dim pl As New MediaPipeline | Dim pl As New MediaPipeline | ||
− | Dim src, bin, vid, | + | Dim src, bin, vid, fsk As MediaControl |
Dim filevideo As String | Dim filevideo As String | ||
− | filevideo = "<FONT Color= | + | filevideo = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>" |
pl = New MediaPipeline | pl = New MediaPipeline | ||
Riga 44: | Riga 44: | ||
bin = New MediaControl(pl, "decodebin") | bin = New MediaControl(pl, "decodebin") | ||
vid = New MediaControl(pl, "videoconvert") | vid = New MediaControl(pl, "videoconvert") | ||
− | + | fsk = New MediaControl(pl, "fakesink") <FONT Color=gray>' ''Impedisce che si apra anche solo per un attimo la finestra del video''</font> | |
src.LinkTo(bin) | src.LinkTo(bin) | ||
bin.LinkLaterTo(vid) | bin.LinkLaterTo(vid) | ||
− | vid.LinkTo( | + | vid.LinkTo(fsk) |
pl.Play | pl.Play | ||
− | + | While pl.Duration < 0.1 | |
Wait 0.01 | Wait 0.01 | ||
− | + | Wend | |
Print "File video: "; filevideo | Print "File video: "; filevideo | ||
− | Print "\nDurata: \e[31m" & | + | Print "\nDurata: \e[31m" & Str(Time(0, 0, 0, pl.Duration * 1000)) |
pl.Stop | pl.Stop | ||
pl.Close | pl.Close | ||
− | + | End |
Versione attuale delle 04:07, 16 nov 2023
Per conoscere la durata di un file video, il Componente gb.media fornisce la Proprietà ".Duration" della Classe MediaPlayer e della Classe MediaPipeline. In particolare questa proprietà restituisce un valore di tipo Float che rappresenta la durata del video espresso in secondi.
Poiché tale proprietà ritorna più precisamente la durata dei dati processati, essa potrà essere utilizzabile solo successivamente all'attivazione del Metodo ".Play()".
Mostriamo alcune modalità.
Uso della Classe "MediaPlayer"
Questa modalità utilizza la sola Classe MediaPlayer:
Public Sub Main() Dim mp As MediaPlayer With mp = New MediaPlayer .URL = Media.URL ("/percorso/del/file/video") ' E' opportuno anteporre la Proprietà ".Video.Enabled = False" prima del Metodo ".Play()", per impedire che appaia per un attimo la finestra del video: .Video.Enabled = False .Play Repeat Wait 0.01 Until .Duration > 0.0 Print "Durata del video: " & Str(Time(0, 0, 0, .Duration * 1000)) .Stop .Close End With End
Uso delle Classi "MediaPipeline" e "MediaControl"
Questa modalità utilizza le Classi MediaPipeline e MediaControl.
In particolare usa il plugin decodebin di GStreamer.
Public Sub Main() Dim pl As New MediaPipeline Dim src, bin, vid, fsk As MediaControl Dim filevideo As String filevideo = "/percorso/del/file/video" pl = New MediaPipeline src = New MediaControl(pl, "filesrc") src["location"] = filevideo bin = New MediaControl(pl, "decodebin") vid = New MediaControl(pl, "videoconvert") fsk = New MediaControl(pl, "fakesink") ' Impedisce che si apra anche solo per un attimo la finestra del video src.LinkTo(bin) bin.LinkLaterTo(vid) vid.LinkTo(fsk) pl.Play While pl.Duration < 0.1 Wait 0.01 Wend Print "File video: "; filevideo Print "\nDurata: \e[31m" & Str(Time(0, 0, 0, pl.Duration * 1000)) pl.Stop pl.Close End