2016-06-29 53 views
0

zurückgeben Ich muss die Breite und Höhe einer Bilddatei mit ffprobe erhalten und müssen in Variablen mit Batch (Windows) speichern, damit ich später diese verwenden kann Werte.Wie Breite und Höhe eines Videos/Bildes mit ffprobe & Batch

Ich habe versucht, dies zu tun,

@echo off 
for /f "tokens=1-2" %%i in ('ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width,height %1') do set W=%%i & set H=%%j 
echo %W% 
echo %H% 

Aber irgendwie

Argument '_' provided as input filename, but 's' was already specified. 

P. S. auszuführen Ich habe auch versucht imagemagick in ähnlicher Weise zu identifizieren, aber es scheint, dass identifizieren einen Fehler hat, wenn Höhe Dateien für GIF Rückkehr

Antwort

1

ich es geschafft haben, Sie Skript anpassen und es funktioniert, können Sie auf diese Weise versuchen:

@echo off 
ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width %1 >> width.txt 
ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height %1 >> height.txt 
FOR /f "tokens=5 delims==_" %%i in (width.txt) do @set width=%%i 
FOR /f "tokens=5 delims==_" %%i in (height.txt) do @set height=%%i 
echo width=%width% 
echo height=%height% 
del width.txt && del height.txt 
pause 
+0

Eine kleine Erklärung dessen, was Sie hinzugefügt haben und warum, wäre hilfreich. – glls

+0

Auf diese Weise erhalten Sie keine Fehlermeldung: 'Argument '_' als Eingabe Dateiname angegeben, aber 's' wurde bereits angegeben. ' – mrzed

0

Nur entkommen die = Zeichen ^ und aufgeteilt, um w und h (vielleicht gibt es eine Möglichkeit, sie auf einmal abrufen, aber ich weiß es nicht).

@echo off 

for /f "tokens=5 delims==_" %%i in ('ffprobe -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=width %1') do set W=%%i 
echo %W% 

for /f "tokens=5 delims==_" %%i in ('ffprobe -v error -of flat^=s^=_ -select_streams v:0 -show_entries stream^=height %1') do set H=%%i 
echo %H%