Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

miércoles, 1 de abril de 2015

Uso de librerías Externas: Reproductor de Video

El uso de librerías externas (normalmente hechas en C o C++), aumenta la potencia de gambas3 a límites insospechados :). En este artículo expondré un ejemplo (realizado por Vuott, del foro de gambas de italia), donde se usa las librerías externas las libvlc (para reproducirvideos) y   libquicktime (para extraer datos del audio yvideo).

Para usar librerías externas:
1) Se define cual o cuales vamos a usar.
Esto se hace con la orden Librery:
LIBRARY LibraryName

Por ejemplo:
Library "libquicktime:2.0.0"
Library "libvlc:5"
Nota:
Evidentemente, tendremos que tener instalada la librería en nuestro sistema.


2) Luego declaramos las funciones externas  que vamos a usar siguiendo este esquema.

{ PUBLIC | PRIVATE } EXTERN Identifier ( [ Parameter AS Datatype [ , ... ] ] ) [ AS Datatype ] [ IN Library ] [ EXEC Alias ]


Ejemplo:

Private Extern libvlc_media_new_path(p_instance As Pointer, path As String) As Pointer

Nota:
Para declarar correctamente la función externa hay que conocer como funciona la función, que parámetros admite y que devuelve. Para ello siempre es aconsejable estudiar la API de la librería que estemos usando. Por ejemlo la API de VLC, viene definida en esta web: Documentacion API VLC

Una vez declaradas todas las funciones externas que vamos a usar, ya podemos hacer uso de ellas en el programa de la misma forma que estamos acostumbrados a usar las funciones.


Por ejemplo:
El siguiente código se usa para reproducir video en un DrawingArea:

Private inst As Pointer
Private mp As Pointer

Private m As Pointer
Private id As Integer

Public Sub ButtonEjecutar_Click()

' Inizializza la libreria VLC:
inst = libvlc_new(0, Null)

m = libvlc_media_new_path(inst, rutaReproducir)

' Crea un media player:
mp = libvlc_media_player_new_from_media(m)

' Per far mostrare il video nella "DrawingArea", ricaviamo il suo identificativo:
id = DrawingArea1.Id

' Passiamo l'identificativo della finestra, nella quale dovrà essere mostrato ilvideo:
libvlc_media_player_set_xwindow(mp, id)

' Avvia l'esecuzione del file video da parte del media player:
libvlc_media_player_play(mp)
reproduciendoVideo = True

Do
TextLabelDuracion.Text = ("Duración: ") & Str(Date(0, 0, 0, 0, 0, 0,libvlc_media_player_get_length(mp, 0)))
TextLabelReproduciendo.Text = ("Reproduciendo... ") & "<FONT Color=red>" &Str(Date(0, 0, 0, 0, 0, 0, libvlc_media_player_get_time(mp)))
Wait 0.01

Loop Until libvlc_media_player_get_state(mp) > libvlc_Paused

.....

End

Os dejo aquí un pantallazo de la aplicación:



Video para que veais la aplicación funcionando:

 
Enlace de descarga del ejemplo: fichero alojado en google drive



Fuente Original:
Autor: Vuott del foro de gambas-it.org
Guide_della_comunit_Video 
Gestione_dei_file_video_con_le_funzioni_esterne_del_API_di_LibVLC
Ottenere_informazioni_generali_sull_audio_e_sul_video_con_le_funzioni_esterne_del_API_di_Libquicktime 

Documentación de gambaswiki:
http://gambaswiki.org/wiki/lang/library 
http://gambaswiki.org/wiki/cat/externfunc
http://gambaswiki.org/wiki/lang/extdecl

No hay comentarios:

Publicar un comentario

A falta de donativos... un poco de publicidad