aba*_*ter 5 jpeg ffmpeg avconv
我正在尝试使用avconv为一系列jpg文件制作动画.基于众多示例,我正在尝试使用%d.jpg来指定文件.或%05d.jpg.但是,我得到了:
avconv -i %d.jpg a.avi
avconv version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers built on Jun 12 2012 16:37:58 with gcc 4.6.3
%d.jpg: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是我目录列表的一个片段:
10380.jpg
10390.jpg
10400.jpg
1040.jpg
10410.jpg
10420.jpg
10430.jpg
10440.jpg
Run Code Online (Sandbox Code Playgroud)
有从00000.jpg到14400.jpg的jpeg
我不太了解通配符系统,但这就是示例中的内容.
(注意:我将其标记为ffmpeg,因为avconv的标签不存在,而avconv取代ffmpeg)
更新 我正在根据@ av501的答案更新问题.
首先,我有一个按顺序排序10的png文件列表.它们的文本在5位整数之前.例如:
SkinMattekNutrient_py_00000.png
SkinMattekNutrient_py_00010.png
SkinMattekNutrient_py_00020.png
...
SkinMattekNutrient_py_10440.png
Run Code Online (Sandbox Code Playgroud)
批量转换为jpg的方法是什么?我试过了
convert ...
SkinMattekNutrient_py_%05d.png %05d.jpg
Run Code Online (Sandbox Code Playgroud)
和
convert ...
SkinMattekNutrient_py_%5d.png %5d.jpg
Run Code Online (Sandbox Code Playgroud)
但我得到:
convert SkinMattekNutrient_py_%05d.png %05d.jpg
convert: missing an image filename `%05d.jpg' @ error/convert.c/ConvertImageCommand/3011.
Run Code Online (Sandbox Code Playgroud)
您需要将%5d用于您的文件.但你似乎有两个问题
要使%5d工作,您必须有5位数的编号.[你有一个1040.jpg]也是连续的.00000.jpg然后00001.jpg.你的文件名似乎跳了10.
如果所有这些都是10的倍数,那么你可以使用%d50.jpg [但你仍然需要修复你的1040.jpg]
否则命令行在这里工作[我正在使用ffmpeg -i%5d.jpg out.avi和ffmpeg -i%5d0.jpg out.avi]
这是在 Bash shell 中批量转换图像文件的一种方法:
for f in *.png; do ffmpeg -i "$f" "${f%.png}.jpg"; done
Run Code Online (Sandbox Code Playgroud)
我相信这种技术适用于任何需要单独列出输入和输出文件的命令。在您的情况下,这将是:
for f in *.png; do convert "$f" "${f%.png}.jpg"; done
Run Code Online (Sandbox Code Playgroud)