I'm a newbee to ubuntu and need your help: (32bit ubuntu 12.10) my command:
ffmpeg -i ../output_images/particles%04d.png -r 30 -b 30000k final_movie.aviworks for my 800x800 *.png pictures properly, but it doesn't with 512x512 *.png. There I get the following message:
[image2 @ 0x938a100] Could not find codec parameters (Video: png, 512x512)On the campus-machines it works for both with the same code. I tried doing a resize-command:
for p in *.tga; do convert -resize 800x800 $p $p; doneWith this added, it works, but I have and 800x800-movie in the end.
I've already installed the following packages:
Glut:
sudo apt-get install freeglut3-devffmpeg:
sudo apt-get install ffmpegThere was a "curl command not found" error. I fixed it with:
sudo apt-get install curlThere was another "convert: command not found" and I fixed it with:
sudo apt-get install imagemagickAny idea what is missing?
112 Answers
A misleading situation
First of all, the so-called "ffmpeg" from the Ubuntu repository is not really ffmpeg from the FFmpeg project, but a fake version from a fork. It's a confusing situation. See:
- Who can tell me the difference and relation between ffmpeg, libav, and avconv?
- The FFmpeg/Libav situation
Secondly, this fake "ffmpeg" (and avconv) are terribly buggy. FFmpeg development is very active, and using a recent version of real ffmpeg will most likely resolve this issue.
Getting the real ffmpeg
You have several options:
- Compile ffmpeg on Ubuntu - customizable, gives most recent code, but you must compile (not that hard and shouldn't take too long). Non-intrusive to the system.
- Use a static build - easiest to use but not customizable; also non-intrusive.
- Use Jon Severinsson's FFmpeg PPA - easy to enable and install but old and not customizable
Each has their advantages and disadvantages as described above.
Using a static build
You just need to download the archive, extract it, and execute the binary. No compiling or installing is necessary:
wget
tar xzvf ffmpeg.static.32bit.2013-03-19.tar.gzNow you can use it. You can either navigate to the directory containing ffmpeg, and run (notice the preceding ./):
./ffmpeg -i input ... output...or provide the full path to it as in:
/home/andy/ffmpeg/ffmpeg -i input ... outputChoose your $PATH
If you want the real ffmpeg whenever you use the ffmpeg command without having to use ./ or having to provide a full path to the binary, then place the ffmpeg binary in the bin directory in your home:
mkdir ~/bin
mv ffmpeg ~/bin
hash -rNow you can just run ffmpeg and you'll be ready to encode stuff. If you want to use a different directory other than ~/bin, then you will have to add the directory to your $PATH as shown in How to add a directory to my path?
Checking for spies
Now using the ffmpeg command should show something like (note the "FFmpeg developers" phrase):
$ ffmpeg
ffmpeg version N-54152-g730e07f Copyright (c) 2000-2013 the FFmpeg developersIf it shows the following then you'll know that you are cursed and the fake version is still being used (note the "Libav developers" phrase):
$ ffmpeg
ffmpeg version 0.8.5-6:0.8.5-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers What helped me is to change the image conversion format from png to jpeg. So the makemovie.sh has to look like this:
#!/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 .. 1