当前位置: 首页 > news >正文

利用ffmpeg转码视频为gif图片,调整gif图片的大小

【1】压缩gif图片大小

一般发布技术文章的时候经常要插入GIF图演示软件效果,但是一些编辑器总是限制大小,但是录制的时候可能一不小心就搞大了。

要将 GIF 图片大小限制在 10MB 内,可以使用 FFmpeg 进行压缩。

以下是一个ffmpeg的命令:

ffmpeg -i input.gif -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -pix_fmt yuv420p -r 15 -b:v 2M -movflags +faststart -fs 10M output.gif

解释一下这个命令:

-i input.gif:指定输入文件路径。
-vf “scale=trunc(iw/2)*2:trunc(ih/2)*2”:用于调整视频的分辨率,确保它是偶数。
-pix_fmt yuv420p:设置像素格式为 yuv420p。
-r 15:设置输出视频的帧率为 15 帧每秒。
-b:v 2M:设置视频的目标比特率为 2Mbps。
-movflags +faststart:使输出文件在网络上逐步播放更加友好。
-fs 10M:指定输出文件的最大文件大小为 10MB。

最后的output.gif 是输出文件的名称和格式。通过指定 -fs 10M 参数,FFmpeg 将努力使输出文件大小不超过 10MB。 压缩后的 GIF 图片可能会有质量损失,具体效果取决于输入文件的内容和压缩参数的设置。需要尝试不同的参数组合以获得最佳的压缩效果。

【2】视频转GIF图片

如果录制了视频,需要将整个视频转为图片。 可以使用FFmpeg将视频转换为GIF,可以使用以下命令:

ffmpeg -i input_video.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" output.gif

这个命令的各个部分的功能解释:

  • -i input_video.mp4:指定输入视频文件。
  • -vf "fps=10,scale=320:-1:flags=lanczos":使用-vf参数指定视频滤镜。在这里,我们采用了两个过滤器。第一个是fps过滤器,用于设置输出GIF的帧率,这里设定为每秒10帧。第二个过滤器是scale过滤器,用于调整输出GIF的分辨率,这里将宽度设置为320像素,高度按比例自动调整,同时采用lanczos算法进行重采样,以获得更好的质量。
  • output.gif:指定输出GIF文件的名称。

执行该命令后,FFmpeg将会将输入视频转换为GIF格式,并根据设定的帧率和分辨率进行处理。可以根据需要调整帧率和分辨率等参数以达到理想的转换效果。

【3】视频指定的片段转为GIF图像

如果只需要视频中的某一段画面转换为GIF,可以使用FFmpeg的 -ss-t 参数来指定起始时间和持续时间。

下面是一个示例命令:

ffmpeg -i input_video.mp4 -ss 00:01:00 -t 10 -vf "fps=10,scale=320:-1:flags=lanczos" output.gif

在这个命令中:

  • -ss 00:01:00:指定从视频的1分钟处开始。
  • -t 10:指定持续时间为10秒。
  • -vf "fps=10,scale=320:-1:flags=lanczos":同样使用了帧率和缩放的过滤器,也可以根据需要进行调整。

这样,FFmpeg将会从视频的1分钟处开始提取10秒的画面,并将其转换为GIF格式。你可以根据需要修改 -ss-t 参数来选择不同的视频片段进行转换。

【4】视频压缩

如果有一个视频,想要使用ffmpeg 命令,将视频重新编码,限制大小输出。

ffmpeg -i input_video.mp4 -c:v libx264 -crf 23 -maxrate 500k -bufsize 1000k -c:a aac -b:a 192k output_video.mp4

这个命令中的参数含义是:

  • -i input_video.mp4:指定输入视频文件。
  • -c:v libx264:使用H.264视频编码器。
  • -crf 23:设置视频的质量,数值越小表示质量越高,一般范围是18-28。
  • -maxrate 500k:设置视频的最大比特率为500k。
  • -bufsize 1000k:设置视频的缓冲区大小为1000k。
  • -c:a aac:使用AAC音频编码器。
  • -b:a 192k:设置音频的比特率为192k。
  • output_video.mp4:指定输出视频文件。

这个命令会重新编码输入视频,并根据设定的参数控制输出视频的大小。可以根据需要调整参数以达到理想的输出效果。

如果输出的视频质量过低,也可以提高视频质量。可以调整CRF(Constant Rate Factor)参数的值来获得更高质量的视频。较小的CRF值会产生更高质量的视频,但文件大小也会相应增加。可以尝试将CRF值从23调整到更小的数值,例如18或者15,来获得更高质量的输出视频。

下面是一个示例命令,将CRF值调整到18:

ffmpeg -i input_video.mp4 -c:v libx264 -crf 18 -maxrate 500k -bufsize 1000k -c:a aac -b:a 192k output_video.mp4

也可以尝试不同的CRF值,找到适合你需求的视频质量和文件大小的平衡点。记住,减小CRF值会增加视频的质量,但可能也会增加文件大小。

【5】ffmpeg是什么?

下载地址:http://ffmpeg.org/

FFmpeg 是一个开源的跨平台音视频处理工具,可以用来处理、转码、编辑、流媒体等多种音视频相关任务。FFmpeg 提供了一整套强大的工具和库,包括ffmpeg命令行工具、libavcodec(音视频编解码库)、libavformat(封装格式处理库)等,可以在命令行中进行各种音视频处理操作。

FFmpeg 之所以如此强大,主要有以下几个方面原因:

  1. 丰富的功能支持:FFmpeg 支持几乎所有主流音视频格式的编解码,可以处理音视频的转码、剪切、合并、滤镜处理等操作,同时支持流媒体的推送和拉取。
  2. 跨平台性:FFmpeg 是跨平台的工具,可以在不同的操作系统上运行,包括Windows、Mac OS、Linux等,使其具有广泛的适用范围。
  3. 高度可定制性:FFmpeg 提供了丰富的参数选项和滤镜支持,用户可以根据需求对输出进行高度定制,满足各种复杂的音视频处理需求。
  4. 开源免费:FFmpeg 是一个开源项目,遵循 LGPL 许可协议,可以免费获取和使用,吸引了全球开发者的参与和贡献,使其不断得到改进和更新。
  5. 强大的社区支持:FFmpeg 拥有庞大而活跃的开发社区,用户可以通过官方文档、邮件列表、论坛等途径获得支持和帮助,同时也可以参与到项目的开发和改进中。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 全球氢燃料电池汽车市场规划预测:未来六年CAGR为44.4%
  • 前端-防抖代码
  • App推广新利器:Xinstall携带参数安装功能详解
  • FIR低通滤波器
  • 可验证随机函数 vrf 概述
  • Boost:asio网络编程从同步到异步
  • 【C++】函数重载
  • idea个人常用快捷键设置
  • 掌握PyCharm代码格式化秘籍:提升代码质量的终极指南
  • vue3: vuedraggable 的使用方法(正常数据的基本使用与树结构数据递归使用)
  • 【K8S】为什么需要Kubernetes?
  • 【Wireshark 抓 CAN 总线】Wireshark 抓取 CAN 总线数据的实现思路
  • STM32 | ADC+RS485编写代码,实现光敏电阻控制灯的亮度
  • C语言 | Leetcode C语言题解之第319题灯泡开关
  • CSS面试题
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • es6(二):字符串的扩展
  • javascript 哈希表
  • java取消线程实例
  • js作用域和this的理解
  • Node + FFmpeg 实现Canvas动画导出视频
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • springboot_database项目介绍
  • vue 配置sass、scss全局变量
  • webpack4 一点通
  • 聚簇索引和非聚簇索引
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端性能优化--懒加载和预加载
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 写代码的正确姿势
  • 云大使推广中的常见热门问题
  • ​configparser --- 配置文件解析器​
  • ​MySQL主从复制一致性检测
  • # Redis 入门到精通(一)数据类型(4)
  • # 达梦数据库知识点
  • #includecmath
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $.ajax,axios,fetch三种ajax请求的区别
  • (4)Elastix图像配准:3D图像
  • (6)添加vue-cookie
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二) 初入MySQL 【数据库管理】
  • (回溯) LeetCode 46. 全排列
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (四)c52学习之旅-流水LED灯
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • *1 计算机基础和操作系统基础及几大协议
  • .net core + vue 搭建前后端分离的框架
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET MVC 验证码
  • .Net 路由处理厉害了
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET开源、简单、实用的数据库文档生成工具