我在 Windows 中有一些文件夹,其中包含由网络摄像头定期创建的 jpg 文件(一个文件夹中大约有 50 个)。这些文件的名称为 P21013010143010.jpg、P21013010343310.jpg,...我想从这些文件中创建一种幻灯片或视频(mp4、avi,...)。我找到了一些使用 ffmpeg 的示例,所以我安装了它并尝试了一下 - 但不幸的是没有成功。我找到的所有示例都类似于
ffmpeg -f 图像2 -i .jpg -s foo.avi
不幸的是,我找不到与我的文件名“P”、后跟 14 位数字和“.jpg”匹配的模式。是否有机会使用类似“P*.jpg”或正则表达式之类的东西?
如果有办法实现这一点,ffmpeg 将如何对文件进行排序?我需要按升序对文件进行排序。
提前致谢!
坦率
答案1
尝试使用这个批处理文件来完成这项工作。将以下代码复制到记事本,使用您想要的名称保存它,但扩展名为 *.bat。将图像所在的文件夹拖放到批处理文件中。它会询问您希望图像之间的时间间隔(以秒为单位),准备就绪后,它应该会从您拖到其中的图像创建一个 mp4 视频...
@echo off
if /i exist "%~1" (if /i not exist "%~1\" exit) else (exit)
echo.
Set /p "Interval=What time interval in seconds would you like to have? "
set HResolution=1280
set VResolution=720
pushd "%~1"
if /i exist "%~n1.tmp" del /q "%~n1.tmp"
if /i exist "%~dp0%~n1.mp4" del /q "%~dp0%~n1.mp4"
for /f "delims=" %%a in ('dir /b /on *.jpg *.png') do (
echo file '%%a'>>"%~1\%~n1.tmp"
echo duration %Interval% >>"%~1\%~n1.tmp"
)
ffmpeg -safe 0 -f concat -i "%~n1.tmp" -vf "scale='min(%HResolution%,iw)':'min(%VResolution%,ih)':force_original_aspect_ratio=decrease,pad=%HResolution%:%VResolution%:-1:-1" "%~1.mp4"
if /i exist "%~n1.tmp" del /q "%~n1.tmp"
如果您想要更高或更低的视频分辨率,请更改 set HResolution= 和 set VResolution= 的部分
文件列表实际上是:
文件‘文件 01.jpg’
持续时间 3
文件‘文件 02.jpg’
持续时间 3
文件‘文件 03.jpg’
持续时间 3
.....