Autor Beitrag
dynamo
Hält's aus hier
Beiträge: 11

Vista32/64, Win7_64
CodeGearRADStudio2007
BeitragVerfasst: So 08.11.09 00:02 
Wenn ich createprocess() z.B. die Kommandozeile lame -h -V 0 d:\_musik\xyz.wav D:\_musik\xyz.mp3 übergebe, dann wandelt lame.exe brav meine *.wav nach *.mp3 um.
Aber wie kann ich den aktuellen Status des laufenden Prozesses abfragen, d.h. wieviel % hat er im Moment erreicht? Diese Information brauch ich, um eine Fortschrittsanzeige zu realisieren. Weiß jemand, wie das geht?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 08.11.09 04:04 
Da wirst du dir wohl mal die Dokumentation von der lame.dll/exe angucken müssen. Und eventuell hilft auch eine Forensuche.
aramintaros
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 08.12.09 23:17 
Hi dynamo,
ich experimentire gerade mit dem mencoder und benutze JvCreateProcess von den JediTools.
Hiermal ein par Codezeilen.

Zuerst stelle ich die Parameter
"CommandLine" = "cmd.exe"
"coOwnerDate" = "True"
"coRedirect " = "True"
"StartUpInfo" = "swHide"
so ein.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
begin
  JvCreateProcess1.Run; // Startet die Console
  JvCreateProcess1.WriteLn('mencoder E:\ARBEITEN\Film.avi -srate 48000 -oac mp3lame -lameopts aq=3:cbr=128: -ovc copy -of rawaudio -o E:\ARBEITEN\Film.mp3');
  // Wandelt den Soundfile im Film1.avi zu Film1.mp3 um.
end;

procedure TForm1.JvCreateProcess1Read(Sender: TObject; const S: stringconst StartsOnNewLine: Boolean);
var a: integer;
begin
  Memo1.Lines.Append(s); // Übernimmt jede Zeile der Console, solange sie arbeitet.
  a:= Pos(':', s); // Sucht den Doppelpunt an der 4. Stelle in jeder Zeile,
  if a= 4 then Progessbar1.Position:= StrToInt(Copy(S, 222)); //  und kopiert ab dem 22. Buchstabe 2 Zeichen. Übernimmt den "gefundenden + umgewandelteten Wert in
  // die  Progressbar.
end;


Den Lame-Encoder kenne ich im Umgang nicht, kann natürlich sein, daß der Werte mit Komma ausgibt, dann ist das Ergebnis vorher umzuwandeln.