Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Algunas Cosas Sobre Gb.media.from?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Algunas Cosas Sobre Gb.media.from? 
 
buenas,

resulta que usando el componente gb.media.from cargo el vídeo lo reproduce y cuando finaliza pongo play de nuevo y como que no hay vídeo para reproducir.
Sin embargo si apreto stop y después play si reproduce el vídeo anteriormente cargado

mi pregunta es como hago para detectar que el vídeo termino de reproducirse?
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Algunas Cosas Sobre Gb.media.form? 
 
Antes que nada, tenemos que decir que el objeto MediaView es un componente creado en lenguaje gambas, y en particular con las Clases de gambas relativas a el API de GStreamer. Por ahora veo que el objeto MediaView no tiene un recurso para decirnos cuando un archivo audio/video termina de reproducirse.


Pusiste dos problemas.

1) Si el tu problema principal es que querrías simplemente reproducir de nuevo el mismo file video (o audio o Midi), apretando el Button "Play", este el codigo para ti:
Private bt As Button
Private plobs As Observer


Public Sub Form_Open()
 
 Dim ob As Object
  
   ob = MediaView1.Children[0]
   ob = ob.Children[0]
   ob = ob.Children[2]
   plobs = New Observer(ob.Children[0]) As "Play"

   With bt = New Button(ob.Children[3]) As "Abrir"
    .X = 10
    .Y = 5
    .W = 40
    .H = 20
    .Text = "Abrir"
    .Border = Border.None
  End With

End
  
 Public Sub Abrir_Click()

   MediaView1.Stop
 
   With Dialog
     If .OpenFile() Then Return
     MediaView1.URL = .Path
   End With
  
End


Public Sub Abrir_Enter()

   bt.Border = Border.Plain
    
End


Public Sub Abrir_Leave()

    bt.Border = Border.None
  
End

Public Sub Play_Click()

   MediaView1.Stop

End




2) Si tu quieres saber si/cuando el archivo terminó de reproducirse... esto es más complicado conocerlo.    
 



 
última edición por vuott el Domingo, 19 Julio 2015, 16:42; editado 5 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Algunas Cosas Sobre Gb.media.form? 
 
vuott escribió: [Ver mensaje]
2) Si tu quieres saber si/cuando el archivo terminó de reproducirse... esto es más complicado conocerlo.


...pero tal vez es posible conocerlo... con el ayuda de las funciones externasss.    

Private bt As Button
Private da As DrawingArea
Private pl As ToolButton
Private obs As Observer
Private plobs As Observer
Private tempus As Integer
Private dt As Date


Library "libX11:6.3.0"

Private Enum XYBitmap = 0, XYPixmap, ZPixmap

' Display *XOpenDisplay(char *display_name)
' Opens a connection to the X server that controls a display.
Private Extern XOpenDisplay(display$ As String) As Pointer

' unsigned long XAllPlanes()
' Returns a value with all bits set to 1 suitable for use in a plane argument to a procedure.
Private Extern XAllPlanes() As Long

' XImage *XGetImage(Display *display, Drawable d, int x, int y, unsigned int width, unsigned int height, unsigned long plane_mask, int format)
' Returns a pointer to an XImage structure.
Private Extern XGetImage(displayP As Pointer, d As Long, xI As Integer, yI As Integer, wid As Integer, hei As Integer, plane_mask As Long, formatI As Integer) As Pointer

' unsigned long XGetPixel(XImage *ximage, int x, int y)
' Returns the specified pixel from the named image.
Private Extern XGetPixel(ximage As Pointer, xI As Integer, yI As Integer) As Long

' XCloseDisplay(Display *display)
' Closes the connection to the X server for the display specified in the Display structure and destroys all windows.
Private Extern XCloseDisplay(displayP As Pointer)


Public Sub Form_Open()
 
 Dim ob As Object
  
   ob = MediaView1.Children[0]
   ob = ob.Children[0]
   da = ob.Children[1]
   ob = ob.Children[2]
   pl = ob.Children[0]

   With bt = New Button(ob.Children[3]) As "Abrir"
     .X = 10
     .Y = 5
     .W = 40
     .H = 20
     .Text = "Abrir"
     .Border = Border.None
   End With

   plobs = New Observer(pl) As "Play"
 
End


Public Sub Abrir_Click()
 
   With Dialog
     If .OpenFile() Then Return
     MediaView1.URL = .Path
   End With
  
End


Public Sub Abrir_Enter()

   bt.Border = Border.Plain
    
End


Public Sub Abrir_Leave()

   bt.Border = Border.None
  
End


Public Sub Play_Click()

   If dt > 0 Then Return
     tempus = 0
     obs = New Observer(da) As "DrAr"
     dt = Time(Now)

End


Public Sub DrAr_Draw()

  Dim dsp As Pointer
  Dim XImage As Pointer
 
   dsp = XOpenDisplay(Null)
   If IsNull(dsp) Then Error.Raise("Imposible conectarse a el server X !")
  
   XImage = XGetImage(dsp, da.Handle, 0, 0, da.W, da.H, XAllPlanes(), XYPixmap)
   If IsNull(XImage) Then Error.Raise("Imposible obtener un 'Puntero' a los datos de la imagen de la 'DrawingArea' !")

   If XGetPixel(XImage, (da.W * 50) / 100, 10) <> &D1D1D1 Then
     If tempus = 0 Then
       tempus = DateDiff(dt, Time, gb.Millisecond) * 2
     Else
       If DateDiff(dt, Time, gb.Millisecond) >= tempus Then
         MediaView1.Stop
         dt = 0
       Endif
     Endif
   Endif

   XCloseDisplay(dsp)

End



A mi funciona, dime si a ti funciona este codigo.
 



 
última edición por vuott el Domingo, 19 Julio 2015, 07:59; editado 7 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron