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

文章目录

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






一、视频与 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 动态图片互相转换




1、视频转成 GIF 动态图片


执行

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

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

在这里插入图片描述

转换后的图像如下 :

请添加图片描述


2、 GIF 动态图片转成视频


执行

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《浪潮之巅》:时代的巨轮与公司的兴衰

《浪潮之巅》是一部引人深思的作品,作者吴军通过对AT&T等公司的兴衰历程的叙述,展现了在科技浪潮之巅,公司如何成长、兴盛,并最终可能面临困境或转型。读完这部作品,我对公司的发展、企业经营者的战略眼光以及硅谷…

linux-1-shell

shell脚本(本文以Bash为基础) 要特别注意空格!!! shell一般用于数据的导入导出、文本传输、作业调度 只有单行注释 shell大多数命令可以直接在linux内运行在shell脚本中写入代码时要先写入 #!/bin/bash #! 告诉系统其…

保姆级银河麒麟V10高级服务器离线安装mysql5.7数据库

离线在银河麒麟高级操作系统v10安装mysql5.7 下载mysql5.7 MySQL :: Download MySQL Community Server (Archived Versions) 2、把下载好的包上传到服务器 3、解压 [root1-0001 ~]# cd /data/mysql[root1-0001 mysql]# tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz…

artifactory配置docker本地存储库

​一、概述 本地 Docker 存储库是我们部署和托管内部 Docker 镜像的位置。实际上,它是一个 Docker 注册表,能够托管的 Docker 镜像的集合。通过本地存储库,你可以保存、加载、共享和管理自己的 Docker 镜像,而无需依赖于外部的镜像…

Entropy 题解 Huffman编码 优先队列

Entropy 题目描述 An entropy encoder is a data encoding method that achieves lossless data compression by encoding a message with “wasted” or “extra” information removed. In other words, entropy encoding removes information that was not necessary in t…

Mac和VScode配置fortran

最近更换了mac电脑,其中需要重新配置各类软件平台和运行环境,最近把matlab、gmt、VScode、Endnote等软件全部进行了安装和配置。但是不得不说,mac系统对于经常编程的人来说还是非常友好的! 由于需要对地震位错的程序进行编译运行…

【继承和多态】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…

KEITHLEY(吉时利)2440源测量单位(SMU)数字源表

KEITHLEY(吉时利)2440源测量单位(SMU)数字源表 主要特性 50W 时性能高达 5A / 40V0.012% 基本测量精度,具有 6 位分辨率10pA / 100nV 测量分辨率与 KickStart 软件结合使用美国2440吉时利keithley数字源表特点 2400系列提供宽动…

动态链接是什么?在JVM中,类、对象、方法是如何交互的?

什么是动态链接? 常量池是JVM中存储字面量(literal)和符号引用(symbolic reference)的地方。在类加载的过程中,类文件的常量池中的符号引用会被解析成直接引用,这个过程就是动态链接。 动态链接…

windows10 安装iis 跑asp.net

场景 有个asp.net 需要部署在普通的windows10电脑上,电脑没有启用iis。需要配置下iis,这里记录下应用程序中必须要选中的一些选项。 步骤 打开控制面板,然后选择 程序 -> 启用或关闭 Windows 功能 -> Internet Information Services…

需求 分析

需求分析的任务 需求分析的任务 1、需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。 2、确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 3、系统分析员应该写出软件需求…

Spring Boot 集成 tk.mybatis

一 Spring Boot 集成 tk.mybatis tk.mybatis 是 MyBatis 的一个插件&#xff0c;用于简化 MyBatis 的开发。 1.添加依赖 Spring Boot 项目中的 pom.xml 文件中添加 MyBatis、TkMyBatis 和 MySQL的依赖。 <dependency><groupId>tk.mybatis</groupId><a…

17:缓存机制-Java Spring

目录 17.1 为什么需要缓存17.2 Redis 简介17.3 不同类型的缓存技术对比17.4 缓存机制在Java Spring框架中的应用17.5 应用场景17.6 注意事项 17.1 为什么需要缓存 1. 提升性能 缓存的核心价值在于将数据临时存储在快速访问的介质&#xff08;如内存&#xff09;中&#xff0c…

Xbox VR头盔即将推出,但它是Meta Quest的‘限量版’。

&#x1f4f3;Xbox VR头盔即将推出&#xff0c;但它是Meta Quest的‘限量版’。 微软与Meta合作推出限量版Meta Quest VR头映射Xbox风格&#xff0c;可能是Meta Quest 3或未来版本的特别定制版&#xff0c;附带Xbox控制器。这一合作是Meta向第三方硬件制造商开放其Quest VR头盔…

conda出现http429报错:CondaHTTPError: HTTP 429 TOO MANY REQUESTS for url <xxx>

我的报错信息如下&#xff1a; CondaHTTPError: HTTP 429 TOO MANY REQUESTS for url <https://mirrors.ustc.edu.cn/anaconda/pkgs/main/linux-64/current_repodata.json> Elapsed: 00:46.305607An HTTP error occurred when trying to retrieve this URL. HTTP errors…

ros程序项目打包deb 详细过程以及报错解决

需要注意,最好是 ubuntu 20的 系统, 18 的系统支持不足够 CMakeLists.txt 最后添加, xxxxx 是你的节点或者程序的名称,也就是最后运行的ros节点名称: install(TARGETS xxxxxx ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKI…

C语言如何⽤指针表示多维数组?

一、问题 如何⽤指针表示多维数组&#xff1f; 二、解答 这⾥就是以⼆维数组为例进⾏多维数组的操作演示。 ⾸先定义⼀个⼆维数组 int a[3][3] &#xff0c;数组名代表的是数组的起始地址&#xff0c;因此数组名 a 和第⼀个元素 a[0][0] 的地址是相同的&#xff0c;但是意义却…

小塔 | 时尚领域RFID应用,别人早你一步!

优衣库&#xff0c;作为知名服装品牌零售商&#xff0c;近年来在数字化转型的道路上取得了显著的成果。其中&#xff0c;RFID技术的应用成为了优衣库提升运营效率、优化客户体验以及实现精准营销的重要工具。 RFID助力时尚门店品牌升级 优衣库深知RFID技术的潜力&#xff0c;将…

计算机网络3——数据链路层3以太网的MAC层

文章目录 一、MAC 层的硬件地址1、介绍2、注意点3、定制标准 二、MAC 帧的格式1、结构2、工作原理3、其他 一、MAC 层的硬件地址 1、介绍 在局域网中&#xff0c;硬件地址又称为物理地址或 MAC地址(因为这种地址用在MAC帧中)。 大家知道&#xff0c;在所有计算机系统的设计中…

计算机视觉——两视图几何求解投影矩阵

上文我提到了通过图像匹配得到基本矩阵&#xff0c;接下来我们要接着求解投影矩阵。 计算投影矩阵思路 假设两个投影矩阵为规范化相机&#xff0c;因此采用基本矩阵进行恢复。在规范化相机下&#xff0c; P [ I ∣ 0 ] P[I|0] P[I∣0], P ′ [ M ∣ m ] P[M|m] P′[M∣m]。…