DOS: Programm mit Parametern aufrufen



  • Hi erstmal,

    ich möchte ein Programm mit der folgenden Syntax aus der DOS-Konsole aufrufen:

    ffmpeg -ss 1548787 -i C:\mein video\pfad\mit leerzeichen\video.mp4 D:\ausgabe.mp4

    Das Programm ffmpeg ist im selben Ordner wie mein Programm. Leider klappt das mit den Parametern übergeben mit system() nicht, oder ich mache es falsch.

    Kennt ihr Alternativen zu system() oder wie kann ich mit system Parameter übergeben?

    Danke



  • Hallo,

    für Pfade mit Leerzeichen mußt du diese in Anführungsstriche stecken - und diese wiederum mit dem Backslash escapen (sofern du den Pfad direkt im Quellcode einträgst):

    system("ffmpeg -ss 1548787 -i \"C:\\mein video\\pfad\\mit leerzeichen\\video.mp4\" D:\\ausgabe.mp4");
    


  • danke ich werde es demnächst mal ausprobieren.



  • Der Befehl "ffmpeg.exe" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.

    Das sagt das Programm, selbst wenn ich eine Datei ohne Leerzeichen wähle. In C++ gesprochen sieht das dann so aus:

    system("ffmpeg.exe -ss 20 -vcodec libx264 -preset slow -cfr 20 -i \"D:\\test5.mp4\" D:\\ausgabe.mp4");
    

    c++ kann so grausam sein 😡



  • Schon mal mit ".\\ffmpeg ...." probiert?

    Wenn es wirklich im selben Verzeichnis ist.

    anon99 schrieb:

    c++ kann so grausam sein 😡

    Das hat mit C++ gar nichts zu tun.



  • Das selbe Ergebnis. Das funktioniert leider auch nicht. 😕



  • anon99 schrieb:

    Das Programm ffmpeg ist im selben Ordner wie mein Programm.

    Irrelevant. Das Arbeitsverzeichnis ist entscheidend. Wie startest Du Dein Programm?



  • ich starte das Programm über die Entwicklungsumgebung (CodeBlocks). Ist das das Problem?



  • Naja, Problem wäre zu viel gesagt. Aber ich könnte mir gut vorstellen, dass Deine IDE das aktuelle Verzeichnis nicht auf das Projektverzeichnis setzt. (Warum sollte sie auch?)

    Lass Dir doch mal das aktuelle Verzeichnis von Deinem Programm ausgeben. Oder starte ffmpeg über den vollen Pfad, dann sollte das funktionieren.



  • ok, es lag wirklich am Aufruf. Schließen bitte.


Anmelden zum Antworten