I am trying to make a bunch of png's into a video using avconv, the png's are numbered like filename_<number>
so I usually just use the command:
avconv -r 10 -i filename_%d.png -b:v 1000k test.mp4
I now want to make a video from a subset of the files filename_8
- filename_50
lets say, so I've copied these files into a new directory and tried the same command but now I get the error:
filename_%d.png: No such file or directory
I assume this is because the numbering doesn't start from 1?
How can I achieve this?
avconv -r 10 -start_number 8 -i filename_%d.png -b:v 1000k test.mp4
You will need a recent 9.x version of avconv for the -start_number
option; it is not in version 0.8.x. Alternatively you could use a recent version of ffmpeg. Or rename the files to start with a number between 0 and 4, as it will check for those names by default.
You can concatenate the files with cat and then use the image2pipe demuxer to read them in avconv. Like cat filename* | avconv -f image2pipe -i - ...
Check this out; according to ffmpeg this is how they doing it and it works
img1.jpg, img2.jpg, img3.jpg, ...
Then you may run:
ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
Notice that %d
is replaced by the image number.
img%03d.jpg
means the sequence img001.jpg
,
img002.jpg
, etc.
Use the ‘-start_number’ option to declare a starting number for the
sequence. This is useful if your sequence does not start with
img001.jpg
but is still in a numerical order. The following
example will start with img100.jpg
:
ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
If you have large number of pictures to rename, you can use the
following command to ease the burden. The command, using the bourne
shell syntax, symbolically links all files in the current directory
that match *jpg to the /tmp
directory in the sequence of
img001.jpg
, img002.jpg
and so on.
x=1;
for i in *jpg;
do counter=$(printf %03d $x);
ln -s "$i" /tmp/img"$counter".jpg;
x=$(($x+1));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With