跳转到内容
彼岸论坛
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

[分享创造] 使用 ffmpeg,将多张图片转换成类似幻灯片的视频,支持多种转场效果


小天管理

已推荐帖子

hello ,兄弟们,我又来分享我的 ffmpeg 脚本啦。

这次分享的是一个图片转视频的功能。这个功能之前有 v 友问过,这不来了嘛。

这个脚本其实可以算是我编写的最早的一个 ffmpeg 脚本,只是一直没有再好好整理,这次正好趁着往脚本集添加的机会,重新梳理了一些逻辑、修复了一些 bug 、增加了一些配置项。

先看效果

gif 效果不好,请直接看视频( 394k ): https://github.com/jifengg/ffmpeg-script/assets/17020523/fb0c9182-9161-4692-8884-a5faa98a3abd

为了不造成困扰,示例里没有添加音频和字幕,实际是支持的。

开源地址

GitHub 地址:https://github.com/jifengg/ffmpeg-script

运行脚本后,会扫描输入目录下的图片、音频、字幕文件(其中图片必须有,音频字幕可以没有,如果有则取第一个)。 根据命令行传入的不同参数配置,生成一个类似幻灯片的视频文件,加入各种转场效果。

这里列出脚本支持的参数,更多的使用方法可以到 github 中查看。

node ffmpeg.img2video.js -i <folder> [-o <file> ...]
-preset     <string>    本脚本除了-preset 之外的所有参数,均可以通过传递 preset 文件来设置。
                        如果使用./preset/abc.preset 来设置,则-preset abc 即可。
                        preset 文件的编写请参考 github ( https://github.com/jifengg/ffmpeg-script )。                            
-i          <string>    [必须]要处理的图片/音频/字幕文件所在的目录,扫描时不包含子目录。
                        支持的图片:jpg jpeg png bmp webp
                        支持的音频:mp3 aac wav flac wma ape
                        支持的字幕:lrc srt ass
-o          <string>    视频文件的保存路径,默认为输入目录/output.mp4
 -display   <string>    图片的显示方式,默认为 contain 。可选值为:
                        original:原图;
                        contain:等比例缩放至显示全图,可能有黑边;
                        cover:等比例缩放至能覆盖整个画面,可能有裁剪。
                        fill:拉伸变形至填充整个画面
 -fps       <number>    输出视频的帧率,默认:25
 -crf       <number>    ffmpeg 控制输出视频质量的参数,越小画面质量越好,视频文件也会越大,建议 18~30 之间。默认:23
 -c:v       <string>    输出视频的编码器,默认:h264
 -c:a       <string>    输出视频的音频编码器,默认:aac
 -width     <number>    输出视频的宽度,默认:1920
 -height    <number>    输出视频的高度,默认:1080
 -td        <number>    图片切换动画时长,默认为 4 秒
 -sd        <number>    图片独立显示时长,默认为 7 秒
 -repeat                图片数量太少导致视频时长比音频时长短的时候,循环图片以达到音频的时长。默认:不循环
-y                      覆盖已经存在的输出文件,默认:false
-h                      显示这个帮助信息
-debug                  开启 debug 模式,打印更详细的日志

主要是应用了 ffmpeg 的过滤器xfade

使用 nodejs 是为了支持批量处理,以及将复杂化的命令行用简单的命令来代替。最终是生成一个 ffmpeg 命令行来进行所有处理。

如果你对 ffmpeg 开发也感兴趣,关于这个脚本的技术文章可以查看这里ffmpeg.img2video.md

另外,xfade 提供有 56 种内置效果,能满足大部分需求。不过,更复杂的过渡效果(例如翻页)还没有。
这个过滤器还有一个参数expr,它允许我们自定义过渡效果。不过这个在网上资料很少,正在研究,有点成果但不多。等我研究透了再更新。

脚本目前的参数配置还比较粗糙,转场效果用的是随机的,时长控制是统一的。后续考虑增加一些项目文件之类的文件,可以自主的控制每个图片的转场效果、持续时长、显示类型等等。如果你有类似的需求可以关注我。

意见的链接
分享到其他网站

加入讨论

您现在可以发表并稍后注册. 如果您是会员,请现在登录来参与讨论.

游客
回复主题...

×   粘贴为富文本.   粘贴为纯文本来代替

  只允许使用75个表情符号.

×   您的链接已自动嵌入.   显示为链接来代替

×   您之前的内容已恢复.   清除编辑器

×   您无法直接粘贴图片.要从网址上传或插入图片.

  • 游客注册

    游客注册

  • 会员

    没有会员可显示

  • 最新的状态更新

    没有最新的状态更新
  • 最近查看

    • 没有会员查看此页面.
×
×
  • 创建新的...