Múltiplos arquivos como entrada para o ffmpeg não encontrado

2

Estou usando o Ubuntu 14.04 e compilei o ffmpeg 2.8.4 a partir do código fonte com estas opções:

./configure --enable-gpl --enable-libass --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab --enable-libx264 --enable-nonfree --enable-version3 --enable-shared

Eu tenho um conjunto de arquivos numéricos consecutivos de 0..n e tentei usar o "% 03d" como parte da minha entrada assim:

ffmpeg -y -pix_fmt yuv420p -s qvga -start_number 0 -i picture%03d.yuv -f mp4 -vcodec libx264 -s qvga -an -threads 0 output.mp4

Com e sem o start_number, ele não consegue localizar os arquivos e gera essa mensagem de erro no terminal:

ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers 
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04) 
configuration: --enable-gpl --enable-libass --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-x11grab --enable-libx264 --enable-nonfree --enable-version3 --enable-shared
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
picture%03d.yuv: No such file or directory

Aqui está uma pequena lista de alguns arquivos no diretório como prova de que eles existem:

picture0.yuv    picture153.yuv  picture206.yuv  picture25.yuv   picture312.yuv  picture4.yuv
picture100.yuv  picture154.yuv  picture207.yuv  picture260.yuv  picture313.yuv  picture50.yuv
picture101.yuv  picture155.yuv  picture208.yuv  picture261.yuv  picture314.yuv  picture51.yuv
picture102.yuv  picture156.yuv  picture209.yuv  picture262.yuv  picture315.yuv  picture52.yuv
picture103.yuv  picture157.yuv  picture20.yuv   picture263.yuv  picture316.yuv  picture53.yuv
picture104.yuv  picture158.yuv  picture210.yuv  picture264.yuv  picture317.yuv  picture54.yuv
picture105.yuv  picture159.yuv  picture211.yuv  picture265.yuv  picture318.yuv  picture55.yuv
picture106.yuv  picture15.yuv   picture212.yuv  picture266.yuv  picture319.yuv  picture56.yuv

Qualquer assistência seria incrível, obrigado antecipadamente.

Editar - comando de trabalho

ffmpeg -y -vcodec rawvideo -pix_fmt yuv420p -s qvga -start_number 0 -f image2 -i picture%d.yuv -f mp4 -vcodec libx264 -s qvga -an -threads 0 output.mp4
    
por Paul Gregoire 08.01.2016 / 17:33

2 respostas

2

Seus nomes de arquivos de entrada não têm preenchimento zero, então use -i picture%d.yuv .

Outras coisas:

  • Verifique se não há arquivos ausentes ou interrupções na sua sequência.

  • Suas opções de saída -f mp4 , -s qvga , -an e -threads 0 são supérfluas neste caso.

por LordNeckbeard 08.01.2016 / 23:49
2

tente adicionar -f image2 antes de -i picture%03d.yuv .

Editar : solução alternativa.

se você estiver tentando codificar todos os arquivos yuv para o mp4 único, você pode criar um único arquivo yuv, por exemplo:

cat picture*.yuv > hugefile.yuv

e codifique um único arquivo yuv depois.

Editar : mantenha a ordenação natural.

Para manter a ordem de classificação natural, podemos usar a opção -v do comando ls :

cat $(ls -v picture*) > hugefile.yuv
    
por incBrain 08.01.2016 / 17:37