【问题标题】:avconv: make a video from a subset on imagesavconv:从图像的子集制作视频
【发布时间】:2013-05-01 08:45:04
【问题描述】:

我正在尝试使用 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 开始的?

我怎样才能做到这一点?

【问题讨论】:

标签: ubuntu video avconv


【解决方案1】:
avconv -r 10 -start_number 8 -i filename_%d.png -b:v 1000k test.mp4

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

【讨论】:

  • 请注意,在某些版本(对我来说是 9.16)中,此选项会被忽略。 avconv 在这种情况下不一定会报告错误,因为该选项可以解释为其他命令行修饰符的一部分。
  • avconv -r 10 -start_number 5 -i tt_img_0%04d.jpg -b:v 1000k out.mp4 在我的情况下不起作用:“没有这样的文件或目录”,尽管文件从 tt_img_00005.jpg 开始存在。
  • mencoder "mf://*.jpg" -mf fps=10 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800 完美地解决了这个问题。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

      注意%d 被替换为图片编号。

      img%03d.jpg 表示序列img001.jpgimg002.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));
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 2016-10-18
      相关资源
      最近更新 更多