Tengo algunas imágenes y me gustaría hacer un gif animado con ffmpeg. Las imágenes tienen nombres como:
837_1.png
838_1.png
...
Estoy tratando de dejar de entender la opción de línea de comando -i de ffmpeg pero me estoy bloqueando contra algunos problemas.
Si no especifico nada, me pide que reemplace los archivos:
ffmpeg -i * -vcodec libx264 out.mp4
ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 26 2013 20:18:03 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, image2, from '358_1.png':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, rgb24, 550x550, 25 tbr, 25 tbn, 25 tbc
File '359_1.png' already exists. Overwrite ? [y/N]
Y si trato de usar uno de los formatos más utilizados (% d) en Internet ... ffmpeg no encuentra los archivos:
fmpeg -i '%3d_1.png' -vcodec libx264 out.mp4
ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
built on Jul 26 2013 20:18:03 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
[image2 @ 0x7f963a006600] Could find no file with with path '%3d_1.png' and index in the range 0-4
%3d_1.png: No such file or directory
Entonces ... aquí está la pregunta, ¿cómo usar la opción de línea de comando -i con ffmpg?
En aras de la claridad, estoy en Mac OSX 10.8, ffmpeg versión 1.2.1, zsh 4.3.11
image2
no reconoce que200 OK
es el equivalente de "archivo encontrado", por lo que no deja de buscar.DSCxxxxx.jpg
dondexxxxx
hay un número de 5 dígitos que comienza con cero (tenga en cuenta que no tengo guiones bajos). Aún así, después de ejecutarffmpeg -r 30 -start_number 04606 -i DSC%d.jpg out.mp4
, recibo el mismo error que en la publicación original anteriorGlobbing se puede habilitar especificando la
-pattern_type glob
opción:fuente
xxx%d.png
,xxx%3d.png
,'xxx%d.png'
o'xxx%3d.png'
algo de trabajo[image2 @ 0x2552560] Could find no file with path '*.jpg' and index in the range 0-4 *.jpg: No such file or directory
Nota: el patrón de bloqueo no funciona en Windows (y puede que nunca se deba a la falta de soporte para el bloqueo en libavfilter en Windows). Entonces, si lo hace en Windows, deberá cambiar el nombre de los archivos para que estén numerados secuencialmente y sin huecos.
Puede cambiarles el nombre con una simple línea de comando de Powershell:
fuente
file1.jpg
file2.jpg
...file10.jpg
que si ordena alfabéticamente terminaríafile1.jpg
,file10.jpg
...file2.jpg
Mejor forma de cambiar el nombre con PowerShell (preservar el orden):
fuente
dir
Siempre devuelve los archivos ordenados alfabéticamente? ¿Sería más seguro agregar unsort-object
a la mezcla?