web-dev-qa-db-fra.com

ffmpeg resize "impossible de trouver les paramètres du codec"

Je suis un newbee d'ubuntu et j'ai besoin de votre aide: (32bit ubuntu 12.10) ma commande:

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

fonctionne correctement pour mes images 800x800 * .png, mais pas avec 512x512 * .png. Là je reçois le message suivant:

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

Sur les machines du campus, cela fonctionne pour les deux avec le même code. J'ai essayé de faire une commande de redimensionnement:

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

Avec cela ajouté, cela fonctionne, mais j'ai et 800x800-movie à la fin.


J'ai déjà installé les packages suivants:

Surabondance:

Sudo apt-get install freeglut3-dev

ffmpeg:

Sudo apt-get install ffmpeg

Il y avait une erreur "commande curl introuvable". Je l'ai corrigé avec:

Sudo apt-get install curl

Il y avait un autre "convert: commande introuvable" et je l'ai corrigé avec:

Sudo apt-get install imagemagick

Une idée de ce qui manque?

6
Andy

Une situation trompeuse

Tout d’abord, le soi-disant "ffmpeg" du référentiel Ubuntu n’est pas vraiment ffmpeg du projet FFmpeg, mais une fausse version du fork. C'est une situation déroutante. Voir:

Deuxièmement, ces faux "ffmpeg" (et avconv) sont terriblement buggés. Le développement de FFmpeg est très actif et l'utilisation d'une version récente de real ffmpeg résoudra probablement ce problème.

Obtenir le vrai ffmpeg

Vous avez plusieurs options:

Chacun a ses avantages et inconvénients, comme décrit ci-dessus.

Utiliser une construction statique

Il vous suffit de télécharger l'archive, de l'extraire et d'exécuter le binaire. Aucune compilation ou installation n'est nécessaire:

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

Maintenant, vous pouvez l'utiliser. Vous pouvez soit accéder au répertoire contenant ffmpeg, puis exécuter (notez le précédent ./):

./ffmpeg -i input ... output

... ou indiquez le chemin complet comme dans:

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

Choisissez votre $PATH

Si vous voulez utiliser le vrai ffmpeg à chaque fois que vous utilisez la commande ffmpeg sans avoir à utiliser ./ ni à fournir un chemin complet au fichier binaire, placez le fichier binaire ffmpeg dans le répertoire bin de ta maison:

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

Maintenant, vous pouvez simplement lancer ffmpeg et vous serez prêt à encoder des fichiers. Si vous souhaitez utiliser un autre répertoire que ~/bin, vous devrez alors l'ajouter à votre $PATH comme indiqué dans Comment ajouter un répertoire à mon chemin?

Vérification des espions

Maintenant, en utilisant la commande ffmpeg devrait montrer quelque chose comme (notez la phrase "développeurs FFmpeg"):

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

Si cela montre ce qui suit, alors vous saurez que vous êtes maudit et que la fausse version est toujours utilisée (notez la phrase "développeurs Libav"):

$ ffmpeg
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
6
llogan

Ce qui m’a aidé, c’est de changer le format de conversion d’image de png à jpeg. Le fichier makemovie.sh doit donc ressembler à ceci:

#!/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 ..
0
Florian