Bonjour !
Pour ceux qui connaissent GStreamer, je souhaiterais pouvoir lancer un pipeline avec gst-launch en utilisant execl/execv.
J'ai déjà réussi à lire un flux audio en utilisant execv de cette façon :
1 2
| char *arg[] = {"gst-launch", "uridecodebin", "uri=", monUrl,"! decodebin2 ! autoaudiosink", NULL};
execv("/usr/bin/gst-launch", arg); |
Je voudrais maintenant lancer un pipeline plus complexe utilisant videomixer. Etant donné que l'enchaînement de decodebin2 et autoaudiosink en un seul argument ne semblait pas poser de problème à execv, j'ai créé une fonction qui me renvoie exactement le pipeline GStreamer que je souhaite sous forme de char*. J'ai ensuite lancé :
execl("/usr/bin/gst-launch", "gst-launch", commandeVideomixer, NULL);
Si je teste le résultat de ma fonction directement dans le terminal en rajoutant "gst-launch", le videomixer se lance correctement avec tous les éléments que je souhaite.
En revanche, depuis le execl, je reste bloqué sur le message suivant :
1 2 3 4
| Définition du pipeline à PAUSED...
Le pipeline a terminé la phase PREROLL...
Passage du pipeline à la phase PLAYING...
New clock: GstSystemClock |
D'où peut provenir la différence entre le lancement direct sur le terminal avec gst-launch + ma commande et le lancement depuis execl ?
Merci d'avance si quelqu'un peut m'éclairer...
Partager