IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Process.OutputDataReceived ne fonctionne pas avec : cmd.exe /C "COMMANDS"


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut Process.OutputDataReceived ne fonctionne pas avec : cmd.exe /C "COMMANDS"
    Bonjour,

    Je travail sur une petit outils permettant d'automatiser de l'encodage de vidéo (il faut dire que l'encodeur 1080p de hybride Panasonic n'est pas très performant...)

    Je travail donc avec divers outils externe et piloté par ligne de commande.

    La tâche la plus lourdes consiste a transmettre le flux de sortie du 1er EXE vers le flux d'entrée du 2ème.

    Voici la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ffmpeg -i "C:\myTest\video_test.avi" -vcodec rawvideo -f rawvideo -pix_fmt yuv420p - | x265-64bit-10bit-latest.exe --input - --input-res 720x404 --fps 23.98 "C:\myTest\output_video.hevc"
    Je souhaite maintenant visualiser l'état d'avancement depuis mon IHM. J'utilise alors OutputDataReceived mais rien....

    Pour moi le problème viens du faite que je lance un CMD avec en argument mes 2 EXE.
    OutputDataReceived écoute alors la sortie de CMD.EXE qui lui, ne dit rien....


    Vu le contexte (flux vidéo de grosse dimension) je ne peux pas me permettre de lancer le 1er EXE, stocker le flux décodé puis lancer le 2eme EXE.

    Est-il possible d'écouter les sorties des sous-process?


    Merci,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Process encodeProcess = new Process();
    encodeProcess.StartInfo = new ProcessStartInfo();
    encodeProcess.StartInfo.WorkingDirectory = @"C:\myTest";
    encodeProcess.StartInfo.FileName = "cmd.exe";
    encodeProcess.StartInfo.Arguments = "/C \"" + txtEncodeCommand.Text + "\"";
     
    encodeProcess.EnableRaisingEvents = true;
    encodeProcess.StartInfo.UseShellExecute = false;
    encodeProcess.StartInfo.RedirectStandardOutput = true;
    encodeProcess.OutputDataReceived += encodeProcess_OutputDataReceived;
     
    encodeProcess.Start();
    encodeProcess.BeginOutputReadLine();
     
     
    // Ajout de l'info à une ListBox
    private void encodeProcess_OutputDataReceived(object sender, DataReceivedEventArgs e)
    {
        if (!String.IsNullOrEmpty(e.Data))
        {
            AddText("--DATA--" + e.Data + "--");
        }
        else
        {
            AddText("Receive with no data");
        }
     
        Application.DoEvents();
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Si tu exécute ta commande avec les deux .exe à la main, dans une cmd, tu voit un l'avancement ?
    Tu n'a rien sur OutputDataReceived, mais effectue t'il correctement le travail au final ?

    Ça fonctionne ta ligne avec des syntaxes comme ça ? "- |" et "--input - --input-res"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    Oui le travail est correctement réalisé.

    Le résultat est le même qu'avec un cmd classique.

    oui la syntaxe est correcte, les - et | permettent de rediriger le flux afin d'alimenter l'exe2 avec le résultat de l'exe1.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Si tu exécute ta commande avec les deux .exe à la main, dans une cmd, tu voit un l'avancement ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    Désolé pour la réponse tardive j'ai était positionner temporairement sur un autre projet.

    Oui si je lance des process simple tout va bien.

    Mais dans mon cas j'aurais besoin de me brancher sur le 2ème exe de ma chaine...

Discussions similaires

  1. [2012] [DTEXEC] CMD qui ne fonctionne pas avec SQL Server 2012
    Par mechakiss dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/07/2015, 15h22
  2. .exe ne fonctionne pas avec base de donnée liée
    Par EclairOChocola dans le forum ADO.NET
    Réponses: 1
    Dernier message: 19/03/2014, 21h47
  3. Fonctionne en débug avec visual studio , mais pas avec cmd.exe
    Par olivier1209 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 10/04/2013, 15h02
  4. Réponses: 6
    Dernier message: 27/12/2005, 13h48
  5. window.resizeTo ne fonctionne pas avec firefox?
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo