Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu avconv:从图像的子集制作视频_Ubuntu_Video_Avconv - Fatal编程技术网

Ubuntu avconv:从图像的子集制作视频

Ubuntu avconv:从图像的子集制作视频,ubuntu,video,avconv,Ubuntu,Video,Avconv,我正试图使用avconv将一组png制作成视频,png的编号类似于filename\uu,因此我通常只使用以下命令: avconv-r 10-i文件名\uu%d.png-b:v 1000k test.mp4 我现在想从文件的一个子集filename\u 8-filename\u 50制作一个视频,因此我已将这些文件复制到一个新目录中,并尝试了相同的命令,但现在出现了错误: filename_%d.png: No such file or directory 我想这是因为编号不是从1开始的 如何

我正试图使用avconv将一组png制作成视频,png的编号类似于
filename\uu
,因此我通常只使用以下命令:

avconv-r 10-i文件名\uu%d.png-b:v 1000k test.mp4

我现在想从文件的一个子集
filename\u 8
-
filename\u 50
制作一个视频,因此我已将这些文件复制到一个新目录中,并尝试了相同的命令,但现在出现了错误:

filename_%d.png: No such file or directory
我想这是因为编号不是从1开始的


如何实现这一点?

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

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

对于
-start\u number
选项,您需要最新的9.x版本;它不在0.8.x版中。或者,您可以使用的最新版本。或者重命名文件,使其以0到4之间的数字开头,因为默认情况下会检查这些名称。

检查此项;根据ffmpeg的说法,这就是他们的做法和工作原理

  • 首先,按照数字顺序重命名图片。对于 示例:
    img1.jpg、img2.jpg、img3.jpg,…
  • 然后您可以运行:

    ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
    
    请注意,
    %d
    被图像编号替换

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

  • 使用“-start\u number”选项为 序列如果您的序列不是以
    img001.jpg
    但仍以数字顺序排列。以下 示例将以
    img100.jpg
    开头:

    ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
    
  • 如果有大量图片要重命名,可以使用 服从命令减轻负担。命令,使用bourne shell语法,以符号方式链接当前目录中的所有文件 按以下顺序将*jpg匹配到
    /tmp
    目录
    img001.jpg
    img002.jpg
    等等

    x=1;  
    for i in *jpg;  
    do counter=$(printf %03d $x);  
    ln -s "$i" /tmp/img"$counter".jpg;  
    x=$(($x+1));
    

  • 请注意,在某些版本(我是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开始出现的,但这一技巧非常完美。