Comunidad Gambas-es
[SOLUCIONADO] ¿Como obtener segundos en MediaView? - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: [SOLUCIONADO] ¿Como obtener segundos en MediaView? (/thread-87.html)



¿Como obtener segundos en MediaView? - kokodrilo - 25-08-2020

buenas,

estoy viendo como puedo hacer un archivo de texto con comentarios sobre un video determinado.
voy a usar como llave o titulo la posición actual del video en segundos.
pero la cuestión es como obtener el tiempo actual que se visualiza en el mediaview

ejemplo : 00:02:45/00:10:34

como puedo obtener los: 00:02:45  ???

alguien sabe como obtener estos datos?


RE: ¿Como obtener segundos en MediaView? - tincho - 25-08-2020

en sdl2 Music.pos te da la posición en segundos o milisegundos, no recuerdo.
Tal vez mediaview tenga algo similar.
Saludos.


RE: ¿Como obtener segundos en MediaView? - vuott - 26-08-2020

(25-08-2020, 22:44)tincho escribió: ... la posición en segundos o milisegundos...
Tal vez mediaview tenga algo similar.

...tincho, ma allora sei Onnipotente pure tu !
Mi vuoi sfidare ?
   Big Grin Tongue

Bueno, ...exactamente, todo está come has dicho tincho.
El Objeto MediaView es un po'... Confused rígido; de todas formas yo te doy este exemplum simplex:

Código:
Public Sub Form_Open()

  Me.Show

  With MediaView1
    .URL = Media.URL("/ruta/del/archivo/Audio o Midi o Video")
   
' Espera a que se inicie la ejecución del archivo cargado:
    Repeat
      Wait 0.01
    Until MediaView1.Position > 0

'  Muestra en la parte superior del formulario el tiempo transcurrido desde el inicio de la ejecución del archivo (Audio o Midi o Video):
    Repeat
      Me.Title = Str(Time(0, 0, 0, .Position * 1000))
      Wait 0.01
    Until .Position >= .Duration
  End With

End



RE: ¿Como obtener segundos en MediaView? - vuott - 26-08-2020

...está claro que en un proyecto real y más complejo es mejor usar un Objeto Timer en lugar de un bucle.
Hace falta tambien penetrar en la constitución interna del Objeto MediaView.

Exemplum simplex:

Código:
Private tempus As Timer


Public Sub Form_Open()
 
 Dim ob As Object
 Dim obs As Observer
 
 ob = MediaView1.Children[0]
 ob = ob.Children[0]
 ob = ob.Children[3]
 
' Usamos la Clase "Observer" para no interferir (sustituyéndo)
' con los eventos originales de los botones de inicio y stop de "MediaView":
 obs = New Observer(ob.Children[0], False) As "Inicio"
 obs = New Observer(ob.Children[1], False) As "Stop"
 
 MediaView1.URL = Media.URL("/ruta/del/archivo/audio o midi o video")
 
End

Public Sub Inicio_Click()

  With tempus = New Timer As "Tempus"
    .Delay = 100
    .Start
  End With
 
End

Public Sub Tempus_Timer()
 
  Label1.Text = Str(Time(0, 0, 0, MediaView1.Position * 1000))
 
End

Public Sub Stop_Click()

  Label1.Text = Null
  tempus.Stop
 
End



RE: ¿Como obtener segundos en MediaView? - tincho - 26-08-2020

(26-08-2020, 01:59)vuott escribió:
(25-08-2020, 22:44)tincho escribió: ... la posición en segundos o milisegundos...
Tal vez mediaview tenga algo similar.
...tincho, ma allora sei Onnipotente pure tu !
Mi vuoi sfidare ?
   Big Grin Tongue
Non avrò mai il tuo livello, maestro.
Saludos.


RE: ¿Como obtener segundos en MediaView? - vuott - 26-08-2020

(26-08-2020, 13:00)tincho escribió: Non avrò mai il tuo livello, maestro.

Caro tincho, se io avessi una risposta a tutto, non lancerei sfide, ma insegnerei Teologia a Parigi. Sleepy

[Imagen: images?q=tbn%3AANd9GcQlofnS7LWoVY23HP-IO...g&usqp=CAU]


RE: ¿Como obtener segundos en MediaView? - kokodrilo - 26-08-2020

gracias vuott, es lo que andaba buscando

Write "\r\e[31m" & Str(Date(0, 0, 0, 0, 0, 0, .Position * 1000))

esa es la linea fundamental


RE: ¿Como obtener segundos en MediaView? - vuott - 26-08-2020

(26-08-2020, 17:49)kokodrilo escribió: Write "\r\e[31m" & Str(Date(0, 0, 0, 0, 0, 0, .Position * 1000))

esa es la linea fundamental

Bueno, recuerda que esta instrucción  \e[31m  atribuye el color rojo al texto impreso en la consola.

Pero cambié la línea de comando a esto:
[code]