
¿Cómo puedo utilizar el siguiente script pararecursivamenteconvertir un directorio que contiene .mp4
a .png
(solo 1 fotograma).
En este momento solo convierte el directorio. No es recursivo.
for i in *.mp4
do name=`echo "$i" | cut -d'.' -f1`
echo "$name"
ffmpeg -i "$i" -r 0.0033 -vf scale=-1:1024 -vcodec png "${name}.png"
done
Respuesta1
find . -type f -name '*.mp4' -exec sh -c '
name="${1%.*}"
echo "$name"
ffmpeg -i "$1" -r 0.0033 -vf scale=-1:1024 -vcodec png "${name}.png"
' find-sh {} \;
Notas:
- En su código original
name=`echo "$i" | cut -d'.' -f1`
hay un fragmento de baja calidad. Se corta en el primer punto, esto parece incorrecto. No es el único problema, pero no daré más detalles. Si desea eliminar una extensión, la forma correcta esname="${i%.*}"
. *.mp4
es citado debido aeste.- Menteeste.
find-sh
se explicaaquí.find
desciende a subdirectorios pero no sigue enlaces simbólicos de forma predeterminada. Si todos los "subdirectorios".
son enlaces a directorios, entonces puede pensar erróneamente que la herramienta no desciende en general. Marqueman 1 find
,-L
opción.