Retour de programme en ligne de commande

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Retour de programme en ligne de commande

Message par Kwai chang caine »

Bonjour les copains :D

Je voulais recuperer la durée d'un MP3 en minute, seconde
Alors "j'm'ai" dit, je vais le demander a FFmpeg, je pense que ce doit etre la maniere la plus simple :roll:

Alors quand je tape dans la CMD, j'obtiens ça :
C:\>ffmpeg -i gaga.mp3
FFmpeg version SVN-r12665, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-postproc --enable-swscale --enable-avfilt
er-lavf --enable-pthreads --enable-liba52 --enable-avisynth --enable-libfaac --e
nable-libfaad --enable-libgsm --enable-memalign-hack --enable-libmp3lame --enabl
e-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
--cpu=i686 --extra-ldflags=-static
libavutil version: 49.6.0
libavcodec version: 51.54.0
libavformat version: 52.13.0
libavdevice version: 52.0.0
built on Apr 2 2008 22:35:11, gcc: 4.2.3
Input #0, mp3, from 'gaga.mp3':
Duration: 00:02:04.8, start: 0.000000, bitrate: 128 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, stereo, 128 kb/s
Must supply at least one output file
Et quand j'essaie d'avoir ces infos par PB , j'ai quedal (Comme dab) :(
Ou c'est que j'ai encore merdoyé :oops:

Code : Tout sélectionner

Parametre$ = "-i gaga.mp3"
x = RunProgram("ffmpeg.exe", Parametre$, "", #PB_Program_Open|#PB_Program_Read)

If x <> 0

 While ProgramRunning(x)
  Debug ReadProgramString(x)
 Wend
 
 If ProgramExitCode(x) <> 0
  Debug "error"
 Else
  Debug "success"
 EndIf
 
 CloseProgram(x)

Else 

 Debug "Ffmpeg ne s'est pas lancé"

EndIf
Merci de votre aide
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Retour de programme en ligne de commande

Message par venom »

Salut KCC,

j'ai regarder de mon coté en effet c'est etrange car ce code doit récuperer une ligne depuis une commande lancer précédament avec runprogram

Code : Tout sélectionner

Programme  = RunProgram("ffmpeg.exe", "-i c:\requiem.mp3", "", #PB_Program_Open |  #PB_Program_Read | #PB_Program_Hide) 
 Output.s = "" 
  While ProgramRunning(Programme) 
	 Output = ReadProgramString(Programme) 
	  If FindString(Output,"Dur",1)
		 Break 
	  EndIf 
   Wend 
  Debug  Mid(Output, 1, 10)
Mais cela ne fonctionne pas. 8O

alors que celui-ci oui :

Code : Tout sélectionner

Programme  = RunProgram("ping.exe", "www.google.fr", "", #PB_Program_Open |  #PB_Program_Read | #PB_Program_Hide) 
 Output.s = "" 
  While ProgramRunning(Programme) 
	 Output = ReadProgramString(Programme) 
	  If FindString(Output,"Stat",1)
		 Break 
	  EndIf 
   Wend 
  Debug  Mid(Output, 14, 24)
étrange






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Retour de programme en ligne de commande

Message par Kwai chang caine »

Peut etre que FFMPEG y l'envoi pas les infos comme le fait une reelle commande DOS ?? :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Retour de programme en ligne de commande

Message par Ar-S »

Je pense plutôt que
FFmpeg version SVN-r12665, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-postproc --enable-swscale --enable-avfilt
er-lavf --enable-pthreads --enable-liba52 --enable-avisynth --enable-libfaac --e
nable-libfaad --enable-libgsm --enable-memalign-hack --enable-libmp3lame --enabl
e-libnut --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
--cpu=i686 --extra-ldflags=-static
libavutil version: 49.6.0
libavcodec version: 51.54.0
libavformat version: 52.13.0
libavdevice version: 52.0.0
built on Apr 2 2008 22:35:11, gcc: 4.2.3
sont les infos de bases données par FFmpeg et qu'ils ne dépendent pas des commandes paramètres inscrit par l'utilisateur.
En tapant -? à la place de -a dans une fenêtre DOS, le même blabla apparait en 1er. C'est un genre d'entête.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Retour de programme en ligne de commande

Message par case »

en fait je pense que ffmepg n'utilise pas la même sortie qu'un programme dos car impossible de faire un dump dans un fichier texte avec


genre ffmpeg.exe >> test.txt


ne fonctionne pas non plus ( en tout cas sous seven)


pour ce qui est de retrouver la durée d'un mp3 ceci dit pas la peine de passer par un programme externe alors qu'on peux le faire en PB...

enfin moi je dis ca, je dis rien hein ...
ImageImage
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Re: Retour de programme en ligne de commande

Message par Fred »

Regarde ce topic: http://www.purebasic.fr/english/viewtop ... lit=ffmpeg, ca peut peut etre t'aider.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Retour de programme en ligne de commande

Message par Kwai chang caine »

@Case

J'ai peur que tu ai raison :(

@FRED

Merci pour le lien 8)
Malheureusement, je l'avais deja vu....et j'avais fait un essai mais ça marche pas non plus.
Je n'y connais rien la dedans...comme dans le reste d'ailleur, mais j'ai l'impression (C'est important le nez, quand le cerveau suit pas :wink:) que pour ce code c'est une autre fonction qui est lue, par la fonction ERROR.
J'en ai deduit ça, car meme si tu demande l'info sur le mp3, bah il te remonte toujours la version 8O

Code : Tout sélectionner

wait=RunProgram("ffmpeg.exe"," -i Gaga.mp3 ","",#PB_Program_Open|#PB_Program_Error|#PB_Program_Hide)

While ProgramRunning(wait)

 line.s=ReadProgramError(wait)
 Debug(StringField(line.s,1,","))

Wend

WaitProgram(wait)
Ce qui est bizarre, c'est que tu n'est pas infirmé ce que dit CASE.
Donc je suppose qu'il a raison, PB ne peut pas lire ce genre d'info.

Par contre, j'avais trouvé entretemps, un code qui lisait la console, (Parce que KCC, y casse les "cavouilles" a tout le monde, mais il cherche noir avant, et meme apres sa question).
Alors je m'etais dit que peut etre en lisant ce qu'ecris FFMPEG, je pourrais remonter les données, mais je n'ai pas eu le temps d'essayer, car dodo :(

Et ce matin "pere casel" a apporté dans notre cheminé son super code MP3 8O

Y'a un truc chiant avec RUNPROGRAM, mais si ça se trouve j'sais encore pas l'utiliser, c'est qu'il referme l'application, alors on a pas le temps de lire...et y'a pas moyen de l'arreter en cours, car avant la console n'est pas ouverte, et apres le RUNPROGRAM...bah elle se ferme :(
PEut etre connaissez vous une combine pour qu'elle reste ouverte ??? :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Re: Retour de programme en ligne de commande

Message par Fred »

C'est surtout ffmpeg qui est mal codé, il utilise pas correctement la sortie standard (le fait qu'on ne puisse pas utiliser la redirection sous DOS le prouve).
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Retour de programme en ligne de commande

Message par Kwai chang caine »

D'accord FRED merci de l'info.
La seule chose que je voulais savoir c'est si c'est "normal" de ne pas pouvoir lire la sortie de FFMPEG

Quand je veux dire PB ne peux pas....sache bien que ce n'est pas une critique :D
Je pensais encore a un "protocole" ou une methode que tu n'avais soit pas choisie, sois pas encore envisagée :roll:
Je suis le premier a dire que PB sait tout faire....sauf la vaisselle .....et les GIFS et retour à la ligne :mrgreen: Aie pas sur la tete ...pas sur la tete aie !!! :lol: :lol:

Maintenant...si comme case t'as un PC dans tes toilettes....FFMEG, il est "OPEN RIVIERE"..... tu devrais leur montrer...ce que c'est que coder dans le bon sens :?
Et y'aura toujours un KCC derriere toi, avec une canette de bierre, une echarpe aux couleurs de PB, et une pancarte pour crier :
"Allez FREDO vas z'y FREDO...vas z'YYYyyyyyyyy !!!!!"
"Allez FREDO vas z'y FREDO...vas Z' YYYyyyyyyyy !!!!!"
:o :o

Au fait, encore merci pour mes JPG...j'meclate comme une bete avec la 4.41 ... 8)

Bonne journée et encore merci de ta reponse 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Retour de programme en ligne de commande

Message par Backup »

Kwai chang caine a écrit : Par contre, j'avais trouvé entretemps, un code qui lisait la console, (Parce que KCC, y casse les "cavouilles" a tout le monde, mais il cherche noir avant, et meme apres sa question).
c'est qu'il referme l'application, alors on a pas le temps de lire...et y'a pas moyen de l'arreter en cours, car avant la console n'est pas ouverte, et apres le RUNPROGRAM...bah elle se ferme :(
PEut etre connaissez vous une combine pour qu'elle reste ouverte ??? :roll:
ben tu cherche mal dans la doc !! :roll:

Code : Tout sélectionner

; *******************************
; recupere tout les Formats de codec possible avec ffmpeg
FFmpeg$ = "C:\Dobro\PureBasic\dobro\Dobro_creation\Pure Converter\pure converter_source\Source_pure_converter_v1_8\ffmpeg.exe" 

id=RunProgram(FFmpeg$,"-formats",fichier$,#PB_Program_Open|#PB_Program_Read );<--- on lance ffmpeg

While AvailableProgramOutput(id)
    Debug ReadProgramString(id) + Chr(13) 
Wend
Delay(60000) ; ---------< ici la methode pour rester ouvert !!
CloseProgram(id)
; *******************************
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Retour de programme en ligne de commande

Message par Kwai chang caine »

T'es un malin DOBRO, t'as sorti la phrase de son contexte :lol:
Je parlais du code pour retourner un texte de la console.
La plaie du forum a écrit :Par contre, j'avais trouvé entretemps, un code qui lisait la console, (Parce que KCC, y casse les "cavouilles" a tout le monde, mais il cherche noir avant, et meme apres sa question).
Pour runprogram, j'ai lu la doc, mais pas tout compris :oops:
Y'a un truc chiant avec RUNPROGRAM, mais si ça se trouve j'sais encore pas l'utiliser
Mais bon....le soleil...ça brule les yeux :lol: :lol: :lol:

C'est pas grave...merci de ton code...mais chez moi ça me donne un panneau noir :(
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Retour de programme en ligne de commande

Message par Kwai chang caine »

Par contre y viens encore de m'arriver un truc de guedin 8O

J'ai lancé le meme code et cette fois il m'a donné la "DURATION" en plus de l'erreur
Comme si le texte il etait coincé quelque part et qu'a force que je le demande a FFMPEG et bah il me le donne 8O

J'ai bidouillé et maintenant plus moyen qu'il recommence ....
J'comprend plus rien :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre