![FFMPEG 图像序列到具有特定持续时间的视频](https://linux22.com/image/1569379/FFMPEG%20%E5%9B%BE%E5%83%8F%E5%BA%8F%E5%88%97%E5%88%B0%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E6%8C%81%E7%BB%AD%E6%97%B6%E9%97%B4%E7%9A%84%E8%A7%86%E9%A2%91.png)
假设您有一个包含 40 个 .jpeg 文件(从网络摄像头捕获的帧)的文件夹。
如何将其转换为恰好3秒长的视频?
在 Windows 上使用 FFmpeg。
答案1
- 按顺序重命名图像文件:
- A。 Explorer(无第三方工具)方法:按日期(或文件名)对图片进行排序,使最旧的照片排在最上面。选择所有图片,右键单击最旧的照片,重命名,键入 img。所有图片都重命名为以下格式:img (1).jpg、img (2).jpg、img (11).jpg
- b. 有人告诉我这个 powershell 命令可以执行:
dir *.jpg | %{$x=0} {Rename-Item $_ -NewName "Base$($x.tostring('000000')).jpg"; $x++ }
- c. AntRename Portable 可以轻松做到这一点
- 运行此命令:
ffmpeg -i "img (%d).jpg" timelapse.mp4
- a. -i 表示这是输入
- b. %d 是一个序列模式(查找小数/数字),它将匹配这样的文件名:img (1).jpg、img (2).jpg、img (11).jpg。文档主要给出了示例 %03d,它将匹配零填充的文件名:img001.jpg、img002.jpg
- c.附加选项:
- C1。 -f image2 强制使用 image2 复用器/解复用器,它通常会自行解决
- C2. 帧速率默认为 25fps,可自定义 (-r 15)。我将其设置为 1fps,将 21 张图片录制为 MP4,结果视频为黑色,因此效果可能有所不同,但我认为 MP4 格式是罪魁祸首
有用的链接:• https://trac.ffmpeg.org/wiki/Slideshow • https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/image_sequence • https://ffmpeg.org/faq.html#How-do-I-encode-single-pictures-into-movies_003f • https://ffmpeg.org/ffmpeg-formats.html#image2-1 • https://photo.stackexchange.com/questions/1254/which-software-to-assemble-a-time-lapse-from-images
在 Windows ffmpeg 构建中不起作用的事情(没有什么可以阻止您在 Linux 中执行此操作): https://trac.ffmpeg.org/wiki/Slideshow
- 通配符 *:失败(错误消息:此 libavformat 版本不支持通配符):
ffmpeg -pattern_type glob -i *.jpg timelapse.mp4
- 将解复用器与文本文件连接起来,文本文件主要包含所有图片的文件路径。失败(错误消息:文件名不安全,操作不允许):
ffmpeg -f concat -i input.txt timelapse.mp4
- 管道(他们的例子使用 cat linux 命令,我试过 dir)。以下命令失败,出现此错误:pipe:: 处理输入时发现无效数据。
dir *.jpg /s /b | ffmpeg -i - timelapse.mp4
© *.jpg | ffmpeg -i - timelapse.mp4
- 以下命令失败会出现此错误:找不到流 0 的编解码器参数(视频:无,无):未知编解码器。
copy *.jpg | ffmpeg -f image2pipe -i - timelapse.mp4
&dir *.jpg /s /b | ffmpeg -f image2pipe -i - timelapse.mp4
- 以下命令失败会出现此错误:找不到流 0 的编解码器参数(视频:无,无):未知编解码器。