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 PointerPrivate mp As PointerPrivate m As PointerPrivate id As IntegerPublic 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 = TrueDoTextLabelDuracion.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.01Loop 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