ffmpeg redimensionar "não foi possível encontrar os parâmetros do codec"

6

Sou novato no ubuntu e preciso da sua ajuda: (32bit ubuntu 12.10) meu comando:

ffmpeg -i ../output_images/particles%04d.png -r 30 -b 30000k final_movie.avi

funciona para minhas fotos 800x800 * .png corretamente, mas não com 512x512 * .png. Lá eu recebo a seguinte mensagem:

[image2 @ 0x938a100] Could not find codec parameters (Video: png, 512x512)

Nas máquinas do campus funciona para ambos com o mesmo código. Eu tentei fazer um comando de redimensionamento:

for p in *.tga; do convert -resize 800x800 $p $p; done

Com isso adicionado, funciona, mas eu tenho e 800x800 filmes no final.

Eu já instalei os seguintes pacotes:

Glut:

sudo apt-get install freeglut3-dev

ffmpeg:

sudo apt-get install ffmpeg

Houve um erro "curl command not found". Eu consertei com:

sudo apt-get install curl

Houve outro "convert: command not found" e corrigi-lo com:

sudo apt-get install imagemagick

Alguma ideia do que está faltando?

    
por Andy 11.03.2013 / 20:09

2 respostas

6

Uma situação enganosa

Primeiro de tudo, o chamado "ffmpeg" do repositório do Ubuntu não é realmente ffmpeg do projeto FFmpeg, mas uma versão falsa de um fork. É uma situação confusa. Veja:

Em segundo lugar, este falso "ffmpeg" (e avconv) são terrivelmente bugados. O desenvolvimento do FFmpeg é muito ativo, e usar uma versão recente do ffmpeg real provavelmente resolverá esse problema.

Obtendo o verdadeiro ffmpeg

Você tem várias opções:

  • Compile ffmpeg no Ubuntu - personalizável, dá código mais recente, mas você deve compilar (não tão difícil e não deve levar muito tempo). Não intrusivo ao sistema.
  • Use uma compilação estática - mais fácil de usar, mas não personalizável; também não intrusivo.
  • Use o FFmpeg PPA de Jon Severinsson - fácil de ativar e instalar, mas antigo e não personalizável

Cada um tem suas vantagens e desvantagens, conforme descrito acima.

Usando uma compilação estática

Você só precisa baixar o arquivo, extraí-lo e executar o binário. Nenhuma compilação ou instalação é necessária:

wget http://ffmpeg.gusari.org/static/32bit/ffmpeg.static.32bit.2013-06-19.tar.gz
tar xzvf ffmpeg.static.32bit.2013-03-19.tar.gz

Agora você pode usá-lo. Você pode navegar até o diretório que contém ffmpeg e executar (observe o anterior ./ ):

./ffmpeg -i input ... output

... ou forneça o caminho completo para ele, como em:

/home/andy/ffmpeg/ffmpeg -i input ... output

Escolha seu $PATH

Se você quiser o ffmpeg real sempre que usar o comando ffmpeg sem precisar usar ./ ou precisar fornecer um caminho completo para o binário, coloque o binário ffmpeg no diretório bin em sua casa:

mkdir ~/bin
mv ffmpeg ~/bin
hash -r

Agora, basta executar ffmpeg e você estará pronto para codificar as coisas. Se você quiser usar um diretório diferente de ~/bin , então você terá que adicionar o diretório ao seu $PATH como mostrado em Como adicionar um diretório ao meu caminho?

Verificando espiões

Agora, o uso do comando ffmpeg deve mostrar algo como (observe a frase "desenvolvedores do FFmpeg"):

$ ffmpeg 
ffmpeg version N-54152-g730e07f Copyright (c) 2000-2013 the FFmpeg developers

Se ele mostrar o seguinte, você saberá que está amaldiçoado e a versão falsa ainda está sendo usada (observe a frase "Desenvolvedores do Libav"):

$ ffmpeg
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
    
por LordNeckbeard 19.03.2013 / 21:15
0

O que me ajudou é mudar o formato de conversão de imagem de png para jpeg. Então o makemovie.sh tem que ficar assim:

#!/bin/bash
cd output_images
for F in $(ls *.tga); 
do 
    convert -quality 100 $F ${F%.tga}.jpg; 
    #convert -quality 100 $F ${F%.tga}.png;
    rm $F;
    echo done with converting $F; 
done
cd ..

THISPATH=$(pwd)
export PATH=$PATH:${THISPATH}/ffmpeg/ffmpeg-install/bin/

echo Making the movie now...

cd final_movie
rm final_movie.avi
ffmpeg -i ../output_images/particles%04d.jpg -r 30 -b 30000k final_movie.avi
cd ..
    
por Florian 13.03.2013 / 16:01