FFMPEG + Videoscreenshots

skydrak

Member
Hallo,

ich arbeite derzeit an einer kompletten Überarbeitung einer Videoseite und würde daher gerne mit FFMPEG Screenshots von allen Videos generieren lassen. Ich bräuchte dafür jedoch auch eine Abfrage, wenn ein Video unterhalb einer bestimmten Länge ist, dass dann von einem anderen Timestamp der Screenshot erstellt wird, als bei längeren Videos:

Code:
#!/bin/sh

IFS="

"

for INPUT_FILE in `find videos/ -type f -iname '*.flv' -mmin +120 | sed "s/input\///"`; do
		LENGTH=`ffmpeg -i videos/$INPUT_FILE 2>&1 | grep Duration: | awk '{print $2}' | sed "s/.[0-9]*,//"`;
		
		if [$LENGTH < 6 ]; then
		
			ffmpeg -i $INPUT_FILE -y -f mjpeg -ss 3 -sameq -t 0.001 -s 500*374 screenshots/$INPUT_FILE.jpg 2>&1;
			
		 else
		
		ffmpeg -i $INPUT_FILE -y -f mjpeg -ss 8 -sameq -t 0.001 -s 500*374 screenshots/$INPUT_FILE.jpg 2>&1;

fi;

done;

Jedoch scheint die Länge auszulesen nicht zu funktionieren und außerdem meldet er mir noch beim abarbeiten des Scripts folgendes: ./screen.sh: 20: cannot open 6: No such file

Wäre schön wenn mir jemand weiterhelfen könnte, da ich echt auf dem Schlauch stehe. :(

Beste Grüße,
Pascal
 
Deine IF Formulierung ist zumindest mal fehlerhaft
Code:
[ $LENGTH -lt 6 ]
nach öffnender und vor schliessender Klammer ein Leerzeichen und < durch -lt ersetzen sollte, solange $LENGTH eine Zahl enthält, funktionieren.

Auch Deine Length-Ermittlung ist so nicht OK:
Die Shell mag nur ganze Zahlen.
Wenn Du Deinen sed-Teil durch
Code:
cut -d ":" -f 2
ersetzt, so erhälst Du die Minuten.
 
Last edited by a moderator:
Back
Top