Ejecutar Archivos Audio MP3 Con La Clase "Music" Del Componente Gb.sdl2.audio Y Con La Ayuda De La Libreria "libmpeg3"


Objetivo: Ejecutar Archivos Audio MP3 Con La Clase "Music" Del Componente Gb.sdl2.audio Y Con La Ayuda De La Libreria "libmpeg3"
Os dejo este mi codigo para ejecutar un archivos audio MP3 con la Clase "Music" del Componente "gb.sdl2.audio" y con la ayuda de la libreria "libmpeg3" para obtener la duración del archivo mp3.
Hace falta activar el Componente "gb.sdl2.audio" y tener instalada en el sistema la libreria "libmpeg3.so.2.1.8".
Library "libmpeg3:2.1.8"

' mpeg3_t* mpeg3_open(char *path, int *error_return)
' Open the MPEG stream.
Private Extern mpeg3_open(path As String, error_return As Pointer) As Pointer

' long mpeg3_audio_samples(mpeg3_t *file, int stream)
Private Extern mpeg3_audio_samples(mpeg3file As Pointer, _stream As Integer) As Long

' int mpeg3_sample_rate(mpeg3_t *file, int stream)
Private Extern mpeg3_sample_rate(mpeg3file As Pointer, _stream As Integer) As Integer

' int mpeg3_close(mpeg3_t *file)
' Close the MPEG stream.
Private Extern mpeg3_close(mpeg3file As Pointer) As Integer


Public Sub Main()

Dim mp3 As Pointer
Dim perc As String
Dim camp As Long
Dim freq, i As Integer
Dim s As Single
Dim tmp As Date

perc = "/ruta/del/archivo.mp3"

mp3 = mpeg3_open(perc, 0)

camp = mpeg3_audio_samples(mp3, 0)

freq = mpeg3_sample_rate(mp3, 0)

' Obtiene la duración del archivo mp3:
s = camp / freq

Print "Duración del archivo: "; Date(0, 0, 0, 0, 0, 0, s * 1000)

Music.Load(perc)
Music.Play

tmp = Now

Repeat
i = DateDiff(tmp, Now, gb.Second)
Write "\rTiempo transcurrido: " & Date(0, 0, 0, 0, 0, 0, i * 1000)
Until i >= s

' Cuando la ejecución termina, el programa libera la memoria anteriormente ocupada y se cierra:
mpeg3_close(mp3)

End

última edición por vuott el Sabado, 30 Noviembre 2019, 01:08; editado 4 veces
Perfil MP  
Objetivo: Re: Ejecutar Archivos Audio MP3 Con La Clase "Music" Del Componente Gb.sdl2.audio Y Con La Ayuda De La Libreria "libmpeg3"
Gracias Vuott, seguramente lo use para el programa que hice hace un tiempo llamado Vinilo que esta algo desactualizado.
una consulta, ¿Como se pueden saber todas las variables disponibles en la librería?
Por ejemplo, si quisiera extraer el nombre del artista o el disco o mas datos, ¿Como se que cosas puede devolver la librería ?
Un saludo

Perfil MP  
Objetivo: Re: Ejecutar Archivos Audio MP3 Con La Clase "Music" Del Componente Gb.sdl2.audio Y Con La Ayuda De La Libreria "libmpeg3"
tincho escribió: [Ver mensaje]
si quisiera extraer el nombre del artista o el disco o mas datos

Para extraer los TAG de un archivo mp3...

https://www.gambas-it.org/wiki/inde...PI_di_Libspctag
https://www.gambas-it.org/wiki/inde...l_API_di_Id3tag
https://www.gambas-it.org/wiki/inde...API_di_Libtag_c
https://www.gambas-it.org/wiki/inde...el_API_di_Avbin
https://www.gambas-it.org/wiki/inde...zioni_di_Gambas
https://www.gambas-it.org/wiki/inde...PI_di_libmpg123
https://www.gambas-it.org/wiki/inde..._del_API_di_VLC

última edición por vuott el Domingo, 01 Diciembre 2019, 17:57; editado 1 vez
Perfil MP  
Objetivo: Re: Ejecutar Archivos Audio MP3 Con La Clase "Music" Del Componente Gb.sdl2.audio Y Con La Ayuda De La Libreria "libmpeg3"
vuott escribió: [Ver mensaje]
tincho escribió: [Ver mensaje]
si quisiera extraer el nombre del artista o el disco o mas datos

Para extraer los TAG de un archivo mp3...

https://www.gambas-it.org/wiki/inde...PI_di_Libspctag
https://www.gambas-it.org/wiki/inde...l_API_di_Id3tag
https://www.gambas-it.org/wiki/inde...API_di_Libtag_c
https://www.gambas-it.org/wiki/inde...el_API_di_Avbin
https://www.gambas-it.org/wiki/inde...zioni_di_Gambas
https://www.gambas-it.org/wiki/inde...PI_di_libmpg123
https://www.gambas-it.org/wiki/inde..._del_API_di_VLC

Muchas gracias de nuevo, una información muy útil la que pasas.
Pero.. cuando usas una librería externa desde gambas ¿Como sabes que "comandos" puedes usar?
Por ejemplo, en el uso de mpg123 hay una serie de ordenes:
Citar:

Private Extern mpg123_close(mh As Pointer) As Integer
Private Extern mpg123_delete(mh As Pointer)
Private Extern mpg123_exit()
Private Extern mpg123_id3(mh As Pointer, v1 As Pointer, v2 As Pointer) As Integer
Private Extern mpg123_init() As Integer
Private Extern mpg123_meta_check(mh As Pointer) As Integer
Private Extern mpg123_new(decoder As String, errorI As Pointer) As Pointer
Private Extern mpg123_open(mh As Pointer, pathFile As String) As Integer
Private Extern mpg123_scan(mh As Pointer) As Integer
Private Extern mpg123_strerror(mh As Pointer) As String

¿Como sabes que existe algo como mpg123_strerror?
¿Hay una lista en alguna parte de todas las "ordenes" disponibles de cada librería?
¿Hay que remitirse al código fuente?
Mi pregunta es general, es para todas las librerías.
Saludos.

Perfil MP  
Objetivo: Re: Ejecutar Archivos Audio MP3 Con La Clase "Music" Del Componente Gb.sdl2.audio Y Con La Ayuda De La Libreria "libmpeg3"
tincho escribió: [Ver mensaje]

¿Como sabes que existe algo como mpg123_strerror?
¿Hay una lista en alguna parte de todas las "ordenes" disponibles de cada librería?

Bueno, para conocer los recursos (variables, Estructuras, Funciones, etc...) de una libreria externa, escrita en C, hace falta buscar su file "Header" (xxxx.h), porqué en este archivo están los símbolos, identificadores de los recursos de la libreria.
Una libreria puede tener uno o más archivos header.
Normalmente el archivo de cabecera de una libreria se encuentra en la carpeta de sistema: /usr/include
Por ejemplo, puedes encontrar los file header de mpeg3 en la carpeta: /usr/include/mpeg3 .

última edición por vuott el Lunes, 02 Diciembre 2019, 00:36; editado 3 veces
Perfil MP  
Objetivo: Re: Ejecutar Archivos Audio MP3 Con La Clase "Music" Del Componente Gb.sdl2.audio Y Con La Ayuda De La Libreria "libmpeg3"
vuott escribió: [Ver mensaje]
tincho escribió: [Ver mensaje]

¿Como sabes que existe algo como mpg123_strerror?
¿Hay una lista en alguna parte de todas las "ordenes" disponibles de cada librería?

Bueno, para conocer los recursos (variables, Estructuras, Funciones, etc...) de una libreria externa, escrita en C, hace falta buscar su file "Header" (xxxx.h), porqué en este archivo están los símbolos, identificadores de los recursos de la libreria.
Una libreria puede tener uno o más archivos header.
Normalmente el archivo de cabecera de una libreria se encuentra en la carpeta de sistema: /usr/include
Por ejemplo, puedes encontrar los file header de mpeg3 en la carpeta: /usr/include/mpeg3 .

Perfecto, era eso, muchas gracias Vuott
Saludos.

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4274s (PHP: -74% SQL: 174%)
Consultas SQL: 47 - Debug off - GZIP Activado