Tenho algumas imagens e gostaria de fazer um gif animado com ffmpeg. As imagens têm nomes como:
837_1.png
838_1.png
...
Estou tentando entender a opção de linha de comando -i do ffmpeg, mas estou travando contra alguns problemas.
Se eu não especificar nada, peça para substituir os arquivos:
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]
E se eu tentar usar um dos formatos mais usados (% d) na internet .. o ffmpeg não encontra os arquivos:
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
Então .. aqui está a pergunta, como usar a opção de linha de comando -i com ffmpg?
Por uma questão de clareza, estou no Mac OSX 10.8, ffmpeg versão 1.2.1, zsh 4.3.11
image2
fails to recognize that200 OK
is the equivalent of "file found" so it doesn't stop searching.DSCxxxxx.jpg
ondexxxxx
está um número de 5 dígitos começando com zero (observe que não tenho sublinhados). Ainda assim, depois de executarffmpeg -r 30 -start_number 04606 -i DSC%d.jpg out.mp4
, recebo o mesmo erro que no post original acimaO globbing pode ser ativado especificando a
-pattern_type glob
opção:fonte
xxx%d.png
,xxx%3d.png
,'xxx%d.png'
ou'xxx%3d.png'
coisa de trabalho[image2 @ 0x2552560] Could find no file with path '*.jpg' and index in the range 0-4 *.jpg: No such file or directory
Nota: O globbing de padrão não funciona no Windows (e talvez nunca seja devido à falta de suporte ao libavfilter no Windows.) Portanto, se você estiver fazendo isso no Windows, precisará renomear os arquivos para que sejam numerados sequencialmente e sem lacunas.
Você pode renomeá-los com uma simples linha de comando do Powershell:
fonte
file1.jpg
file2.jpg
...file10.jpg
que se você classificar em ordem alfabética iria acabarfile1.jpg
,file10.jpg
...file2.jpg
melhor maneira de renomear com o PowerShell (preservar a ordem):
fonte
dir
sempre voltar os arquivos em ordem alfabética? Seria mais seguro adicionar umsort-object
na mistura?