Gambas France BETA


Pas de compte ? Incription

attendre la fin d'un process avant d'en lancer un autre...

1
AuteurMessages
spheris#1 Posté le 31/3/2012 à 10:55:44
Bonjour,
Je lance mplayer dans un process pour lire une video.
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=2029
comment puis-je détecter la fin de la lecture pour pouvoir lancer une autre video (un peu à la façon d'une liste de lecture)
Merci pour vos réponses.
;)
spheris#2 Posté le 1/4/2012 à 19:00:56
Aucune solution ?
;)
linuxos#3 Posté le 1/4/2012 à 19:41:20
Un peu de sel, de poivre et la crevette sera... Salut Spheris,

Est ce que mplayer quitte son process a la fin de la video ? Car si c'est le cas alors
l'evenement KILL lié au process SHELL ou EXEC sera monté.

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.
spheris#4 Posté le 1/4/2012 à 20:58:23
linuxos,
comment puis-je savoir que mplayer quitte son process ?
Merci pour ta réponse
;)

ps : si jamais je suis sur le tchat ce soir
manu#5 Posté le 2/4/2012 à 08:33:45
Avec Gambas ca roule !Tu le surveilles dans le "moniteur système" de Gnome ou KDE ou alors tu lances une action visible dans MonProcess_kill. Je pourrais le faire là mais j'ai pas trop le temps ... ;)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
linuxos#6 Posté le 2/4/2012 à 09:16:45
Un peu de sel, de poivre et la crevette sera... Peux tu me donner la ligne de commande mplayer que tu lances stp ?
En fonction de cela je verrai mieux comment faire.

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.
spheris#7 Posté le 2/4/2012 à 10:24:50
Linuxos,
voici la ligne de commande :

1
2
DIM h AS process
h = EXEC ["mplayer", "-wid", DrawingArea1.Handle, Conv$(Application.Path & "/mavideo.avi", Desktop.Charset, System.Charset)] FOR READ WRITE

Avec ce code là , cela fonctionne très bien. Par contre avant de lancer la 2eme video, j'ai besoin de détecter la fin de la lecture de la 1ere.
A+

;)
linuxos#8 Posté le 2/4/2012 à 11:00:22
Un peu de sel, de poivre et la crevette sera... Et ta distribution c'est quoi stp ?
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.
spheris#9 Posté le 2/4/2012 à 23:15:39
ubuntu 11.04.
Pourquoi me demandes-tu cela ?
;)

Bon, je pense avoir avancé.
Tout d'abord il me faut récupérer le PID du process par
1
monprocess.HANDLE

Ensuite en tester son etat par
1
monprocess.STATE

dès que son état passe à 0 (stopped) je tue la tache par
1
monprocess.kill
et la relance avec le nouveau chemin de l'autre vidéo.
L'idée de base est saisie.
Maintenant, il faut transcrire tout ça en GB.
Pour tester l'état, dois-je mettre le test dans un timer ?
;)
Prokopy#10 Posté le 3/4/2012 à 10:00:57
Kinder PinguiEn gb, c'est plus simple. ;)
Il te suffit d'intercepter l'évènement Kill de ton process comme ceci par exemple :

1
2
3
4
5
6
7
8
9
10
11
PRIVATE processus AS Process

PUBLIC SUB Main()
processus = EXEC ["mplayer", "-wid", DrawingArea1.Handle, Conv$(Application.Path & "/mavideo.avi", Desktop.Charset, System.Charset)] FOR READ WRITE AS "Video1"
END

PUBLIC SUB Video1_Kill() 'Le process est terminé

processus = EXEC ["mplayer" , "-wid" , DrawingArea1.Handle, Conv$ ( Application.Path & "/mavideo2.avi" , Desktop.Charset , System.Charset )] FOR READ WRITE AS "Video2"

END
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
spheris#11 Posté le 3/4/2012 à 21:25:06
Troooop fort ce proko !
Merci
;)
spheris#12 Posté le 5/4/2012 à 08:12:37
Et dans la mesure ou je veux maintenant faire une liste de lecture de fichiers sons uniquement, comment puis-je faire cela ?

en utilisant gb.sdl.sound, tous les sons sont lues en même temps...

Comment puis-je attendre la fin d'un son avant de lire celui d'après?

Merci pour vos réponses

;)
Prokopy#13 Posté le 7/4/2012 à 02:33:06
Kinder PinguiÀ mon avis gb.sdl.sound est vraiment fait pour rester dans la conception de petits jeux, pas vraiment de lecteurs multimédias (la classe Music gère la musique de fond, la classe Sound gère les bruitages).

Donc il y a deux solutions : soit tu utilises mplayer comme pour les vidéos (un peu lourd), soit tu essaies de voir quel temps font à peu près tes sons et tu mets un Wait pour attendre la durée correspondante.
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
gambix#14 Posté le 7/4/2012 à 09:49:06
Faire simple !Normalement cela fait partie des objectifs de gb 3.2 que d'avoir un meilleur gestionnaire de son ... mais que choisir ... gstreamer ou des paquet séparé vers phonon et la lib gnome.

Pas simple
Moins de texte dans une signature c'est agrandir son espace.
spheris#15 Posté le 10/4/2012 à 09:49:23
Bon j'avance avec vos précieux conseils.
J'utilise gb.sdl.sound avec des wait et cela marche pas mal.
Par contre j'utilise une moviebox et j'ai quelques petit souci qui font l'objet d'un nouveau fil.
;) merci pour votre aide .
1