Gambas France BETA


Pas de compte ? Incription

Récupérer des infos du terminal par EXEC

Ce sujet est résolu.

1
AuteurMessages
spheris#1 Posté le 16/2/2024 à 06:42:50
Bonjour,

Par la commande terminal

mplayer monfichier.mp3


je lance une lecture d'un fichier mp3 et je vois défiler le timing.
Comment puis-je récupérer ce timing dans une variable string.

1
2
DIM montexte AS STRING
EXEC["mplayer","monfichier.mp3"] TO montexte


ne fonctionne pas.


J'ai donc essayer de l'inclure dans un process comme ceci :

1
2
DIM monprocess1 AS Process
monprocess1 = EXEC["mplayer","monfichier.mp3"] TO montexte


Cela ne fonctionne pas non plus.

Merci pour vos réponses.
;)
valaquarus#2 Posté le 16/2/2024 à 11:25:24
-- Unus Ex Altera --Salut Sphéris,
je n'aime pas le mp3 (mauvais pour le son, pas d'aigu, pas de grave)
Je pense que tu peux trouver ton bonheur du côté de chez Vuott, ici : Fichier MP3
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
gambix#3 Posté le 16/2/2024 à 18:44:49
Faire simple !Il faut passer par un processus asynchrone.

et récupérer les donnée dans l'event _read du processus ou bien _error
Moins de texte dans une signature c'est agrandir son espace.
linuxos#4 Posté le 16/2/2024 à 19:26:47
Un peu de sel, de poivre et la crevette sera... Spheris,

Ceci devrait faire ton affaire, à moins que tu ne partes sur l'idée de Vuott:

Voir: SHELL dans le Wiki de Gambas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
' Récupère le contenu d'un répertoire en arrière-plan
DIM Content AS STRING

SHELL "ls -la /tmp 2>&1" FOR READ AS "Process"

...

PUBLIC SUB Process_Read()

DIM sLine AS STRING

sLine = READ #LAST, -256

Result &= sLine
PRINT sLine;

END


Note: '2>&1' force la sortie d'une commande vers 'la sortie standard de texte', car certaines commandes n'envoie que sur la sortie Error.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
vuott#5 Posté le 16/2/2024 à 22:58:19
Ne cedere ineluctabili possimusspheris, pourquoi utilisez-vous le programme externe "mplayer" :confused: pour lire les fichiers audio mp3 ?
spheris#6 Posté le 19/2/2024 à 19:44:41
Vuott,
Simplement parce que mplayer permet de faire varier le pitch, la vitesse speed et plein d'autres options que n'ont pas les composants Gambas, par exemple lire un mp3 à partir d'un endroit donné et arrêter la lecture à un endroit donné.

Pour ce qui est de SHELL, cela fonctionne uniquement quand on met peu de paramètres. Si on charge la ligne de commande alors cela ne fonctionne plus du tout voire cela bloque le programme gb.

Seul EXEC fonctionne mais même problème, deux trois paramètres c'est ok, mais plus cela bloque tout.
vuott#7 Posté le 19/2/2024 à 23:45:03
Ne cedere ineluctabili possimus
... faire varier le pitch, la vitesse speed et ..... lire un mp3 à partir d'un endroit donné et arrêter la lecture à un endroit donné.

...en utilisant le Composant gb.media:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
PRIVATE bo AS BOOLEAN


PUBLIC SUB Main()

DIM pl AS MediaPipeline
DIM src, map, mad, vol, spe, pit, snk AS MediaControl

pl = NEW MediaPipeline AS "PLine"

src = NEW MediaControl(pl, "filesrc")
src["location"] = "/chemin/du/fichier/mp3"
map = NEW MediaControl(pl, "mpegaudioparse")
mad = NEW MediaControl(pl, "mpg123audiodec")
vol = NEW MediaControl(pl, "volume")
vol["volume"] = 0.4
spe = NEW MediaControl(pl, "speed")
spe["speed"] = 1.3
pit = NEW MediaControl(pl, "pitch")
pit["pitch"] = 0.8
snk = NEW MediaControl(pl, "autoaudiosink")

src.LinkTo(map)
map.LinkTo(mad)
mad.LinkTo(vol)
vol.LinkTo(spe)
spe.LinkTo(pit)
pit.LinkTo(snk)


pl.Play()
pl.Seek(100.0)

REPEAT
WAIT 0.01
UNTIL bo

pl.Close

PRINT "\n\e[0mExécution terminée !"

END


PUBLIC SUB PLine_End() ' Cet événement est déclenché lorsque l'opération est terminée

bo = TRUE

END
spheris#8 Posté le 21/2/2024 à 20:43:11
Vuott,
J'essaye cela tout de suite et te dis le résultat.
Merci beaucoup
;-)

edition:
J'ai essayé le mediacontrol et je le plante tout le temps.

Où peut-on connaitre tous les types de mediacontrol (quel type) ?
vuott#9 Posté le 21/2/2024 à 21:36:11
Ne cedere ineluctabili possimus
Où peut-on connaitre tous les types de mediacontrol (quel type) ?


https://gstreamer.freedesktop.org/documentation/plugins_doc.html?gi-language=c
spheris#10 Posté le 23/2/2024 à 09:11:25
Merci pour les infos.
Comment puis-je ajouter un effet réverb?
Peux tu me montrer le code source?
vuott#11 Posté le 23/2/2024 à 12:37:25
Ne cedere ineluctabili possimus
Comment puis-je ajouter un effet réverb?

Il est évident que vous devez utiliser un plugin approprié.
GStreamer en fournit au moins deux :
https://gstreamer.freedesktop.org/documentation/audiofx/audioecho.html?gi-language=c#audioecho
https://gstreamer.freedesktop.org/documentation/rsaudiofx/rsaudioecho.html?gi-language=c#rsaudioecho

Pour définir les propriétés de l'effet, vous devez utiliser ses Propriétés, que vous trouverez au bas de la page, à la fin de la description du plugin.
Pour définir les propriétés du plugin dans Gambas, vous devez voir comment je l'ai fait dans mon code ci-dessus.
valaquarus#12 Posté le 24/2/2024 à 12:30:53
-- Unus Ex Altera --Bonjour Sphéris,
je t'ai déjà écrit que le guide communautaire de nos amis italien était une mine d'or :

Guide de la communauté fichier audio et vidéo
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
spheris#13 Posté le 26/2/2024 à 07:34:01
Effectivement c'est un sacré lien. Merci.
Avec les années, on perd la boule désolé.
:bounce:
valaquarus#14 Posté le 26/2/2024 à 09:11:58
-- Unus Ex Altera --Tu as bien le droit de faire ce que tu veux avec ta boule.
Tu avances bien sur le nouveau site. Pour l'instant je n'ai pas osé trop intervenir car tu es dans l'organisation de la chose.
:joker:
Système d'exploitation : KDE neon 6.0.2 ~ Version Gambas : 3.19.90
1