23

我正在尝试使用 avconv 将一堆 png 制作成视频,png 的编号如下filename_<number>,所以我通常只使用命令:

avconv -r 10 -i filename_%d.png -b:v 1000k test.mp4

我现在想从文件的子集制作视频filename_8-filename_50可以说,所以我已将这些文件复制到一个新目录并尝试了相同的命令,但现在我得到了错误:

filename_%d.png: No such file or directory

我认为这是因为编号不是从 1 开始的?

我怎样才能做到这一点?

4

3 回答 3

33
avconv -r 10 -start_number 8 -i filename_%d.png -b:v 1000k test.mp4

您需要最新的 9.x 版本的avconv才能使用该-start_number选项;它不在 0.8.x 版本中。或者,您可以使用最新版本的ffmpeg。或者将文件重命名为以 0 到 4 之间的数字开头,因为默认情况下它将检查这些名称。

于 2013-05-06T15:31:21.563 回答
7

您可以使用 cat 连接文件,然后使用 image2pipe demuxer 在 avconv 中读取它们。喜欢cat filename* | avconv -f image2pipe -i - ...

于 2013-05-06T12:29:52.830 回答
5

看一下这个; 根据ffmpeg,这就是他们的工作方式

  1. 首先,重命名您的图片以遵循数字顺序。例如:img1.jpg, img2.jpg, img3.jpg, ...
  2. 然后你可以运行:

    ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
    

    请注意,%d替换为图像编号。

    img%03d.jpg表示序列img001.jpg, img002.jpg

  3. 使用“-start_number”选项声明序列的起始编号。如果您的序列不是 img001.jpg以数字顺序开始但仍按数字顺序排列,这将很有用。以下示例将以 开头img100.jpg

    ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
    
  4. 如果有大量图片要重命名,可以使用下面的命令来减轻负担。该命令使用 bourne shell 语法,以符号方式将当前目录中与 *jpg 匹配的所有文件链接到/tmp按顺序排列的目录 img001.jpgimg002.jpg依此类推。

    x=1;  
    for i in *jpg;  
    do counter=$(printf %03d $x);  
    ln -s "$i" /tmp/img"$counter".jpg;  
    x=$(($x+1));
    
于 2014-01-01T16:24:22.887 回答