Usando ffmpeg para criar um filme a partir de arquivos png

11

Eu tenho 277 arquivos 800x600 png com nomes de arquivos com o formato island_sizes-CSH (II) - ###. Png em que ### é um número que começa com 084 e termina em 360.

estou fazendo

ffmpeg -i island_sizes-CSH\(II\)-*.png output.mpg -y

mas não funciona:

ffmpeg -f image2 -i island_sizes-CSH \ (II \) - *. png video.mpg -y
ffmpeg versão 1.2.1 Copyright (c) 2000-2013 os desenvolvedores do FFmpeg
  construído em 10 de maio de 2013 15:14:14 com gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4)
  configuração: --prefixo = / usr --libdir = / usr / lib64 --shlibdir = / usr / lib64 --mandir = / usr / share / man --enable-shared --enable-runtime-cpudetect --enable- gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-frei0r --enable-libopencv --enable- libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2-percepções - fstack-protector --param = ssp-buffer-size = 4 -m64 -mtune = genérico -fPIC '--disable-stripping
  libavutil 52. 18.100 / 52. 18.100
  libavcodec 54. 92.100 / 54. 92.100
  libavformat 54. 63.104 / 54. 63.104
  dispositivo de biblioteca 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
Entrada nº 0, imagem2, de 'island_sizes-CSH (II) -084.png':
  Duração: 00: 00: 00.04, início: 0.000000, taxa de bits: N / A
    Stream # 0: 0: Vídeo: png, rgba, 800x600 [SAR 3937: 3937 DAR 4: 3], 25 tbr, 25 tbn, 25 tbc
[png @ 0x1468c20] Ff_frame_thread_encoder_init falhou
Saída # 0, imagem2, para 'island_sizes-CSH (II) -085.png':
    Fluxo 0: 0: vídeo: png, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Saída # 1, imagem2, para 'island_sizes-CSH (II) -086.png':
    Fluxo # 1: 0: vídeo: png, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
...
Saída # 274, imagem2, para 'island_sizes-CSH (II) -359.png':
    Stream # 274: 0: Vídeo: none, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Saída # 275, imagem2, para 'island_sizes-CSH (II) -360.png':
    Stream # 275: 0: Vídeo: none, rgba, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Saída # 276, mpeg, para 'video.mpg':
    Stream # 276: 0: Vídeo: none, yuv420p, 800x600 [SAR 1: 1 DAR 4: 3], q = 2-31, 200 kb / s, 90k tbn, 25 tbc
Mapeamento de stream:
  Fluxo # 0: 0 -> # 0: 0 (png -> png)
  Fluxo # 0: 0 -> # 1: 0 (png -> png)
...
  Fluxo # 0: 0 -> # 274: 0 (png -> png)
  Fluxo # 0: 0 -> # 275: 0 (png -> png)
  Stream # 0: 0 -> # 276: 0 (png -> mpeg1video)
Erro ao abrir o codificador para o fluxo de saída # 218: 0 - talvez parâmetros incorretos como bit_rate, taxa, largura ou altura
rhombidodecahedron
fonte
De man mencoder: mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4, similar para ffmpeg
Eddy_Em
1
@ Eddy_Em Não é semelhante para ffmpeg- mencodertem uma sintaxe completamente diferente, infelizmente.
slhck
1
mencoder trabalhou para mim! Obrigado. Sinceramente, não me importo com o programa que uso - só que recebo o filme.
Rhombidodecahedron

Respostas:

23

Essa é a sintaxe incorreta para passar várias imagens como entrada ffmpeg. Veja o guia do FFmpeg Wiki sobre como criar uma apresentação de slides em vídeo e as image2opções de desmuxador .

Você precisa dizer para usar três dígitos para os números de sequência e começar em 84, ou seja,

ffmpeg -start_number 84 -i island_sizes-CSH\(II\)-%03d.png output.mpg

Algumas dicas adicionais:

  • O MPEG-1 como codec de vídeo é menos do que o ideal e oferece qualidade ruim em tamanhos de arquivo altos. A menos que você deseje compatibilidade com dispositivos ou computadores antigos (ou Windows XP sem codecs), raspe isso e use um codificador MPEG-4 Parte 10 (H.264), como libx264:

    ffmpeg -i … -c:v libx264 out.mp4
    

    Para um tutorial sobre as opções x264 (como alterar a qualidade etc.), consulte o guia de codificação x264 .

  • Os arquivos PNG usam um formato de pixel RGB, que não é suportado em codecs de vídeo normais. Com o MPEG-1, isso não importa, mas com os codecs MPEG-4, pois ffmpegconverteria automaticamente o formato de pixel em YUV não subamostrado. Nesse caso, você precisa traduzir isso para formatos com subamostras de croma , como YUV 4: 2: 0, caso contrário, seu vídeo poderá não ser reproduzido na maioria dos aplicativos:

    ffmpeg -i … -c:v libx264 -pix_fmt yuv420p out.mp4
    
slhck
fonte
Vocês. Eu gosto de você.
Rhombidodecahedron