Page 1 sur 1

RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 9:27
par Thyphoon
Bon voilà je voulais profiter d'un peu de temps libre pour tester quelques choses avec l'encodeur FFMPEG
et j'ai quelques choses de currieux...

POur lancer ma commande FFmpeg j'utilise RunProgram avec #PB_Program_Open|#PB_Program_Read
pour récupérer ce qui sort de FFmpeg

or ça marche tres bien avec un
ffmpeg -h
mais si je fais un ffmpeg pour encoder une video
ffmpeg -i video.avi -vcodec libx264 -b 5000k test.mp4
et bien ça quit tout seul sans rien me retourner.
Parcontre si je change les paramètre de RunProgram avec juste #PB_Program_Open ça fonctionne (mais j'ai les infos dans la fenêtre de la console et je ne peux pas les récupérer)

Comment faire ?
Je me demande si ce n'est pas du au faite que lorsqu'on encode, FFMPEG detect les entrée des touches (q pour arrêter) et qu'il peut poser des question "voulez vous ecraser le fichier test.mp4 ? (y/n)" .... Comment gérer ce genre de message via mon propre programme en Purebasic...

J'ai chercher sur le forum anglais, et ici, j'ai trouvé plein de truc intéressant ... mais sur ce problème rien.
Certain d'entre vous on déjà utilisé FFMPEG mais il utilisait en paramètre #PB_Program_Wait ce qui marche, mais on a pas de retour ...

Code : Tout sélectionner

  FFmpeg$="ffmpeg.exe"
  Parameter.s="-h" 
  Parameter.s="-i -"+Chr(34)+File.s+Chr(34)+" -vcodec libx264 -vpre hq -b 5000k test3.mp4";Mettre cette ligne en commentaire pour tester  avec les parametre -h
  Exec=RunProgram(FFmpeg$,Parameter,"",#PB_Program_Open|#PB_Program_Read);
  If Exec  
    While ProgramRunning(Exec)
      Debug ReadProgramString(Exec)
      
    Wend
    Debug "Error:"+ReadProgramError(Exec)
    Debug (ProgramExitCode(Exec))     
  EndIf
  WaitProgram(Exec)
  CloseProgram(Exec)

Une idée ?

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 11:15
par Backup
Thyphoon a écrit :(mais j'ai les infos dans la fenêtre de la console et je ne peux pas les récupérer)
mais si ! mais si ! :)

Code : Tout sélectionner

If OpenConsole()
    
    ConsoleTitle("Ceci est le titre de la console")
    EnableGraphicalConsole(1) ; passe en mode graphique
    ConsoleColor(10,0)  ; couleur de text vert, couleur fond noir
    ConsoleCursor(10) ; gros curseur
    ConsoleLocate(5, 30); positionne le curseur
    PrintN("Appuyez sur [Entree] pour quitter") ; ecrit
    ConsoleLocate(40, 30) ; laisse le curseur a la fin
    a$ = Input() ; attent une reponse :D
    MessageRequester("", a$)
    Coordinate.l
    x.w = 5: Y.w = 30
    PokeW(@Coordinate, x)
    PokeW(@Coordinate + 2, Y)
    NumCharsRead.l
    Buffer$=Space(100)
    ReadConsoleOutputCharacter_(7, Buffer$, 100, Coordinate, @NumCharsRead)
    Debug Buffer$
    CallDebugger
    
  EndIf
cette exemple "lit" la ligne 30 colonne 5 ;)

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 11:47
par Thyphoon
merci Dobro mais je me suis mal expliqué !

J'ai mon programme ecrit en PB qui envoie des commandes a FFMPEG (qui lui marche en mode console).
Et j'ai besoin de récupérer tout ce qui s'affiche dans la console de FFMPEG.
Le but est d'interagir sur FFMPEG via mon programme sans affiché la consolede FFMPEG !
Et c'est là mon problème. C'est qu'avec RunProgram() ça marche tres bien si j'execute la commande avec un #PB_Program_Wait, mais les infos sont dans la console de FFPMEG. Et si j'execute avec un #PB_Program_Read ça ne marche pas (sauf si on demande l'aide "-h")

Est ce que je suis plus claire ? ou dois prendre des cours de communication lolllll :P

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 11:55
par Backup
oui tres clair !

je n'etais d'ailleurs pas arrivé non plus avec mon convertisseur basé sur FFMPEG :)

http://michel.dobro.free.fr/download.php?view.19

:)

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 12:15
par Thyphoon
Dobro a écrit :oui tres clair !

je n'etais d'ailleurs pas arrivé non plus avec mon convertisseur basé sur FFMPEG :)

http://michel.dobro.free.fr/download.php?view.19

:)
apparement on est pas les seuls :
http://www.purebasic.fr/english/viewtop ... lit=ffmpeg
mais il n'y a pas de solution ... je vais peut être relancer le sujet là bas ...

Mais C'est currieux quand même, car il existe des GUI pour FFMPEG qui y arrive bien ... mais comment ils fonts ... c'est très currieux.
rien a voir avec mon problème mais c'est quand même interessant: il y a sur le forum anglais un exemple de compression avec FFMPEG sans passé par un fichier en lui envoyant directement les données a partir de la mémoire..
http://www.purebasic.fr/english/viewtop ... lit=ffmpeg
Bon c'est super mais ça ne résout pas mon problème

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 12:53
par Backup
si tu trouve tiens nous au jus ;)

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 13:15
par Anonyme
c'est cool se truc , je me demandais justement comment faire des vidéos à partir de bitmap sous linux !
j'va regardé ca ^^

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 20/sept./2009 14:58
par Backup

Re: RunProgram FFMPEG encodage et stdout

Publié : sam. 03/oct./2009 17:40
par Backup
as tu essayé un shellexecute_()
avec l'option #SW_HIDE ?? ;)

Re: RunProgram FFMPEG encodage et stdout

Publié : sam. 03/oct./2009 17:55
par Thyphoon
Faut que je test , merci... j'ai pas trop de temps libre actuellement .... (femme malade, donc les enfants a s'occuper plus beaucoup de boulot ...)
Mais des que j'ai 1h00 tranquille je test ça !
Merci !

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 04/oct./2009 13:21
par Backup
oups !

je t'ai fait une réponse a coté de la plaque !
j'avais oublié le soucis, et j'ai naïvement pensé que tu voulais ne plus afficher la console !! :?

ça va s'arranger :lol:

Re: RunProgram FFMPEG encodage et stdout

Publié : dim. 04/oct./2009 13:30
par Thyphoon
Dobro a écrit :oups !

je t'ai fait une réponse a coté de la plaque !
j'avais oublié le soucis, et j'ai naïvement pensé que tu voulais ne plus afficher la console !! :?

ça va s'arranger :lol:
lollllllll c'est pas grave !! :) c'est l'intention qui compte !! ;)