【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

embedded/2024/9/22 23:42:52/

文章目录

  • 一、视频与 JPG 静态图片互相转换
    • 1、视频转静态图片
    • 2、视频转多张静态图片
    • 3、多张静态图片转视频
  • 二、视频与 GIF 动态图片互相转换
    • 1、视频转成 GIF 动态图片
    • 2、 GIF 动态图片转成视频






JPG__11">一、视频与 JPG 静态图片互相转换




1、视频转静态图片


执行

ffmpeg -i input.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 848x480 output.jpg

命令 , 将 输入文件 input.mp4 中的 第 2 秒 开始的 1 帧数据 转为一张 848x480 像素的图片 , 输出到 output.jpg 文件中 ;

在这里插入图片描述


上述命令解析 :

ffmpeg -i input.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 848x480 output.jpg
  • -i input.mp4 : 指定输入文件为 input.mp4 , -i 参数用于设置输入文件 ;

  • -y : 设置 如果输出文件已存在 , 直接覆盖 , 如果不设置该选项 , 会中断执行 , 询问用户是否覆盖 , 用户需要输入 y , 然后 回车 覆盖已存在的文件 ;
    在这里插入图片描述

  • -f image2 : 设置 输出格式 为 图像序列 ;

  • -ss 00:00:02 : 设置从视频的哪个时间点开始截取图片 , 这里设置的是在第 2 秒开始处截取图片 ;

  • -vframes 1 : 设置只提取 1 帧图像 , 也就是 第 2 秒后的 第一帧图像 ;

  • -s 848x480 : 设置输出图片的大小为 848x480 像素 ;


2、视频转多张静态图片


执行

ffmpeg -i input.mp4 -y -f image2 -ss 00:00:02 -t 00:00:02 -r 15 -s 848x480 output%03d.jpg

命令 , 将 输入文件 input.mp4 中的 第 2 秒 开始的 2 秒数据 的 图像帧 对应的 图像序列输出出来 , 并且指定 帧率为 15FPS , 也就是 1 秒输出 15 帧 , 总共输出 30 张图片 ;

在这里插入图片描述

命令参数解析 :

  • -i input.mp4 : 指定输入文件为 input.mp4 , -i 参数用于设置输入文件 ;

  • -y : 设置 如果输出文件已存在 , 直接覆盖 , 如果不设置该选项 , 会中断执行 , 询问用户是否覆盖 , 用户需要输入 y , 然后 回车 覆盖已存在的文件 ;
    在这里插入图片描述

  • -f image2 : 设置 输出格式 为 图像序列 ;

  • -ss 00:00:02 : 设置从视频的哪个时间点开始截取图片 , 这里设置的是在第 2 秒开始处截取图片 ;

  • -t 00:00:02 : 指定提取图像的时间长度为 2 秒 , 即从 -ss 指定的 00:00:02 时间点开始 , 截取 2 秒的连续图像 ;

  • -r 15 : 设置提取图像的帧率为 15 FPS , 截取 2 秒图像就是 30 张图像 ;

  • -s 848x480 : 设置输出图片的大小为 848x480 像素 ;

  • output%03d.jpg : 指定输出文件的命名模式 , %03d 是一个占位符 , 表示输出的图片文件名将包含一个三位的序号 , 从 001 开始计数 , 直到 999 ;


3、多张静态图片转视频


执行

ffmpeg -f image2 -i output%03d.jpg -r 15 video.mp4

命令 , 将上一个章节生成的 30 张图像 生成一个新的视频 , 设置 帧率为 15FPS , 说明会生成一个 2 秒的视频 ;

在这里插入图片描述





GIF__116">二、视频与 GIF 动态图片互相转换




GIF__124">1、视频转成 GIF 动态图片


执行

ffmpeg -i input.mp4 -ss 00:00:02 -t 00:00:05 -r 5 -s 848x480 output.gif

命令 , 将 视频 的 第 2 ~ 7 秒图像转为了 GIF 动态图片 , 每秒有 5 帧图像数据 ;

在这里插入图片描述

转换后的图像如下 :

请添加图片描述


GIF__146">2、 GIF 动态图片转成视频


执行

ffmpeg -f gif -i output.gif video.mp4

命令 , 将 output.gif 动态图片转为 mp4 视频 ;

在这里插入图片描述


http://www.ppmy.cn/embedded/15322.html

相关文章

「PHP系列」PHP E-mail 注入/防止注入

文章目录 一、PHP E-mail 注入1. E-mail 注入攻击原理2. 防范 E-mail 注入攻击3. 不安全的邮件发送4. 安全的邮件发送 二、PHP E-mail 防止注入1. 验证和过滤用户输入2. 使用安全的邮件发送库3. 案例代码:安全的邮件发送4. 注意事项 三、相关链接 一、PHP E-mail 注…

Linux驱动开发——(二)pinctrl和gpio子系统

目录 一、简介 二、修改设备树 2.1 添加pinctrl节点 2.2 添加LED设备节点 2.3 检查PIN是否被其他外设使用 三、驱动代码 四、平台实验测试 一、简介 pinctrl子系统简单来说就是用来配置PIN的复用和电气属性。 对于使用者来讲,只需要在设备树里面设置好某个p…

程序员裁员潮:技术变革下的职业危机探讨及分析

背景 一对来自中国的工程师夫妇在美国洛斯阿图市不幸身亡,疑因谷歌裁员致悲剧发生。这对夫妇在谷歌公司担任高级工程师,他们的离世无疑给公司带来了巨大的损失。同时,这也引起了人们对职场环境的关注,尤其是对于外籍人士在职场中的…

AIGC实战——基于Transformer实现音乐生成

AIGC实战——基于Transformer实现音乐生成 0. 前言1. 音乐生成的挑战2. MuseNet3. 音乐数据3.1 巴赫大提琴组曲数据集3.2 解析 MIDI 文件3.3 分词3.4 创建训练数据集 4. MuseNet 模型4.1 正弦位置编码4.2 多输入/输出 5. 音乐生成 Transformer 的分析6. 多声部音乐分词6.1 网格…

uniapp 连接夜神安卓模拟器真机调试

打开 HbuilderX 的运行设置: 设置 adb、端口号 模拟器支持的端口可以在配置文件中找到: 配置文件路径:夜神模拟器根目录\bin\BignoxVMS\nox 右键记事本打开nox.vbox即可看到下图内容: 然后运行安卓真机调试选择设备就可以…

mac: nvm is already installed in /Users/**/.nvm, trying to update using git

如图吐了,安装了nvm后出现了如下问题: nvm is already installed in /Users/**/.nvm, trying to update using git 原因分析: 这种情况可能出现在安装脚本检测到 nvm 已经存在于系统中,但是由于某些原因,终端无法识…

排序(ORDER BY)与分页(LIMIT)

1. 排序规则 (1). 使用ORDER BY子句进行排序. ASC(ascend) : 升序排序DESC(descend) : 降序排序.未显示表明ASC/DESC,默认升序排列. (2). 单列排序 : 例 我们发现salary =2500的还有多条记录,我们可以对这些数据再排列.即用到多列排序. (…

华为手机p70即将上市,国内手机市场或迎来新局面?

4月15日,华为官宣手机品牌全新升级,p系列品牌升级为Pura。华为P70系列手机预计将于2024年第一季度末发布,而网友也纷纷表示期待p70在拍照、性能上的全新突破。 网友们对华为P70系列的热情高涨,也印证了国内高端手机市场的潜力巨大…