Differenze tra le versioni di "Eseguire un file audio mediante le funzioni esterne del API di Mpv"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "La libreria esterna '''Libmpv''' consente di eseguire diversi formati di file audio. Per poter utilizzare le risorse di ''Mpv'', è necessario avere installata e richiamare i...") |
|||
Riga 52: | Riga 52: | ||
Dim mpv As Pointer | Dim mpv As Pointer | ||
Dim fileaudio As String | Dim fileaudio As String | ||
− | |||
Dim d, l As Long | Dim d, l As Long | ||
Riga 63: | Riga 62: | ||
mpv = mpv_create() | mpv = mpv_create() | ||
If mpv == 0 Then Error.Raise("Errore !") | If mpv == 0 Then Error.Raise("Errore !") | ||
− | |||
− | |||
− | |||
− | |||
mpv_initialize(mpv) | mpv_initialize(mpv) |
Versione delle 08:29, 25 ago 2020
La libreria esterna Libmpv consente di eseguire diversi formati di file audio.
Per poter utilizzare le risorse di Mpv, è necessario avere installata e richiamare in Gambas la libreria condivisa: "libmpv.so.1.107.0"
Mostriamo un semplice esempio:
Library "libmpv:1.107.0" Private Enum MPV_FORMAT_NONE = 0, MPV_FORMAT_STRING, MPV_FORMAT_OSD_STRING, MPV_FORMAT_FLAG, MPV_FORMAT_INT64, MPV_FORMAT_DOUBLE, MPV_FORMAT_NODE, MPV_FORMAT_NODE_ARRAY, MPV_FORMAT_NODE_MAP, MPV_FORMAT_BYTE_ARRAY ' mpv_handle *mpv_create(void) ' Create a new mpv instance. Private Extern mpv_create() As Pointer ' int mpv_set_option_string(mpv_handle *ctx, const char *name, const char *data) ' Convenience function to set an option to a string value. Private Extern mpv_set_option_string(ctx As Pointer, name As String, data As String) As Integer ' int mpv_set_option(mpv_handle *ctx, const char *name, mpv_format format, void *data) ' Set an option. Private Extern mpv_set_option(ctx As Pointer, name As String, format_ As Integer, data As Pointer) As Integer ' int mpv_initialize(mpv_handle *ctx) ' Initialize an uninitialized mpv instance. Private Extern mpv_initialize(ctx As Pointer) As Integer ' int mpv_command(mpv_handle *ctx, const char **args) ' Send a command to the player. Private Extern mpv_command(ctx As Pointer, args As String[]) As Integer ' int mpv_get_property(mpv_handle *ctx, const char *name, mpv_format format, void *data) ' Read the value of the given property. Private Extern mpv_get_property(ctx As Pointer, name As String, format_ As Integer, data As Pointer) ' void mpv_terminate_destroy(mpv_handle *ctx) ' Disconnect and destroy the mpv_handle. Private Extern mpv_terminate_destroy(ctx As Pointer) Library "libc:6" Private Const LC_NUMERIC As Integer = 1 ' char *setlocale (int __category, const char *__locale) ' Set and/or return the current locale. Private Extern setlocale(__category As Integer, __locale As String) As Pointer Public Sub Main() Dim mpv As Pointer Dim fileaudio As String Dim d, l As Long fileaudio = "' /percorso/del/file/audio" Print "File audio: "; fileaudio Print setlocale(LC_NUMERIC, "C") mpv = mpv_create() If mpv == 0 Then Error.Raise("Errore !") mpv_initialize(mpv) mpv_command(mpv, ["loadfile", fileaudio, Null]) Repeat mpv_get_property(mpv, "duration", MPV_FORMAT_INT64, VarPtr(d)) Wait 0.01 Until d > 0 Repeat mpv_get_property(mpv, "time-pos", MPV_FORMAT_INT64, VarPtr(l)) Write "\e[0m\rDurata: " & Date(0, 0, 0, 0, 0, 0, CInt(d) * 1000) & " Tempo trascorso: \e[31m" & Date(0, 0, 0, 0, 0, 0, CInt(l) * 1000) Wait 0.001 Until l >= d mpv_terminate_destroy(mpv) End