我正在尝试使用FFmpeg从目录中的每个文件中每秒提取一帧。
我对单个文件使用此命令,但是我不知道如何输入目录:
ffmpeg -i "C:\input\clip1.mp4" -vf fps=1 -qscale:v 2 "C:\output\clip1\clip1A"%d.jpg
理想情况下,我希望将帧保存到如下所示的自己的文件夹中,但是我认为我可以自己解决这一问题。如果它们都以相同的前缀和顺序编号输出到相同的文件夹,那就很好。
C:\output\clip1\clip1-001.jpg
, clip1-002.jpg
C:\output\clip2\clip2-001.jpg
, clip2-002.jpg
我已经尝试了许多小时,但我仍然完全迷失了方向。任何帮助将不胜感激。
完成了!此代码会将帧输出到与它们来自的视频同名的文件夹中。这些帧将以视频名称作为前缀,并以从001开始的序列号作为后缀。因此,对于我的文件,它们吐出的是“ /clip1/clip1-001.jpg”等。
以防万一您像我一样,不知道自己在做什么,请将以下代码粘贴到记事本中,另存为“ extractframesorwhatever.bat”,然后从剪辑所在的目录运行。
for %%F in (*.mp4) do (
If not Exist "%%~nF" MkDir "%%~nF"
ffmpeg -i %%F -r 1 -qscale:v 2 %%~nF\%%~nF-%%3d.jpg
)
如果要将文件夹输出到其他位置,请更改:
If not Exist "%%~nF" MkDir "%%~nF"
对于这样的事情:
If not Exist "C:\wherever\%%~nF" MkDir "C:\wherever\%%~nF"
如果这样做,还需要更改输出(在我的示例中):
%%~nF\%%~nF-%%3d.jpg
到
C:\wherever\%%~nF\%%~nF-%%3d.jpg
或者,如果您要将所有框架都放在一个文件夹中。将输出中的第一个%%〜nF替换为您的首选目录。以我的示例为例,它将从C:\ wherever \ %%〜nF \ %%〜nF-%% 3d.jpg到C:\ wherever \ frames \ %%〜nF-%% 3d.jpg。您也可能想要编辑第二行以指向新位置,并阻止它创建一堆不必要的目录,或者完全删除第二行。如果删除第二行,则必须首先自己创建“ frames”文件夹。
编辑-您可能需要从文件名中删除所有空格,然后才能对其进行处理。“批量重命名实用程序”可以为您节省大量时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句