FFmpeg 视频转 GIF
Filtergraph
在 ffmpeg 命令中,可以使用 -filter、-vf、-af 或 -filter_complex 选项指定 filter graph
Filtergraph 由 filter chain 组成,语法如下:
filterchain_1;filterchain_2;...
filterchain 由 filter 连接而成,上一个 filter 的输出成为下一个 filter 的输入,语法如下:
filter_1,filter_2,...
filter 语法:
[in_link_1]...[in_link_N]filter_name@id=key1=value1:key2=value2:...[out_link_1]...[out_link_M]
key 可以省略,如果省略,则只能放在具名参数前面,实际参数会根据 filter 的定义分配
如果 value 的值是列表类型,则每个元素由 | 隔开
示例:
fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen=stats_mode=diff[p];[s1][p]paletteuse=dither=bayer:bayer_scale=1
等价于:
fps=10,scale=width=320:height=-1:flags=lanczos,split[s0][s1];[s0]palettegen=stats_mode=diff[p];[s1][p]paletteuse=dither=bayer:bayer_scale=1
Video 转 Gif
ffmpeg -ss 1 -t 9 -i foo.mp4 -vf "fps=10,split[s0][s1];[s0]palettegen=stats_mode=diff[p];[s1][p]paletteuse=dither=bayer:bayer_scale=1" -loop 0 output.gif
解释:
-ss 1: 从输入视频的第 1 秒开始处理。
-t 9: 从起始时间起提取 9 秒的内容(即从第 1 秒到第 10 秒)。
-i foo.mp4: 指定输入文件为
foo.mp4。-vf: 应用视频过滤器,后面跟着过滤器的详细设置。
过滤器的具体内容是:
- fps=10: 设置输出 GIF 的帧率为每秒 10 帧。
- split[s0][s1]: 将视频流分成两个相同的流,分别命名为
s0和s1。 - [s0]palettegen=stats_mode=diff[p]: 对第一个流
s0生成一个调色板p,使用差异统计模式来优化颜色。 - [s1][p]paletteuse=dither=bayer:bayer_scale=1: 对第二个流
s1使用生成的调色板p,并应用 Bayer 抖动(dithering),使 GIF 的色彩更平滑。
-loop 0: 指定 GIF 循环播放,
0表示无限循环。output.gif: 指定输出文件名为
output.gif
filter graph 可视化:
[s0] [p]
input ---> fps ---> split ------> palettegen -----> paletteuse ---> output
| ^
| [s1] |
+---------------------------------+
使用上面的命令创建 GIF 可能会遇到产生出来的 GIF 文件后面几帧有卡顿现象,这时可以使用两步法:
palette="/tmp/palette.png"
filters="fps=10"
# 1. 先生成调色板
ffmpeg -v warning -i foo.mp4 -vf "$filters,palettegen" -y $palette
# 2. 再结合调色板生成 GIF
ffmpeg -v warning -i foo.mp4 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y output.png
参考:
FFmpeg 视频转 GIF的更多相关文章
- c# ffmpeg视频转换
c# ffmpeg视频转换 什么是ffmpeg,它有什么作用呢,怎么可以使用它呢,带着问题去找答案吧!先参考百度百科把,我觉得它很强大无奇不有,为了方便大家我就把链接提供了! http://baik ...
- c# ffmpeg视频转换【转载】
c# ffmpeg视频转换 什么是ffmpeg,它有什么作用呢,怎么可以使用它呢,带着问题去找答案吧!先参考百度百科把,我觉得它很强大无奇不有,为了方便大家我就把链接提供了! http://baik ...
- Android 音视频深入 二十一 FFmpeg视频剪切
视频剪切我意外的发现上一次的视频压缩的代码能够运行FFmpeg视频剪切的命令,但是不能做视频合并的命令,因为不能读取记录了几个视频的路径的txt文件. 这里我就说直说视频剪切的过程,不说代码,只说lo ...
- C# 使用ffmpeg视频截图
<appSettings> <add key="ffmpeg" value="E:\ffmpeg\ffmpeg-20141012-git-20df026 ...
- nginx RTMP FFmpeg 视频直播
/**************************************************************************** * nginx RTMP FFmpeg 视频 ...
- 视频编解码的理论和实践2:Ffmpeg视频编解码
近几年,视频编解码技术在理论及应用方面都取得了重大的进展,越来越多的人想要了解编解码技术.因此,网易云信研发工程师为大家进行了归纳梳理,从理论及实践两个方面简单介绍视频编解码技术. 相关阅读推荐 &l ...
- php ffmpeg视频和序列帧转化
php ffmpeg视频和序列帧转化 <pre>$cmd=shell_exec("ffmpeg -i ".__DIR__ . "/shipin1.mp4 -r ...
- C# ffmpeg 视频处理格式转换具体案例
C# ffmpeg 视频处理格式转换 C# ffmpeg 视频处理格式转换avi到MP4格式 1.代码如下: using System;using System.Diagnostics; namesp ...
- ffmpeg 视频过度滤镜 gltransition
ffmpeg 视频过度滤镜 gltransition 上次随笔中提到的 ffmpeg-concat 可以处理视频过度,但是缺点是临时文件超大. 经过查找 ffmpeg 还有 gltransition ...
- ffmpeg视频格式转换(Java)
命令: 高品质: ffmpeg -i E:\input\a.wmv -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 4 -y E ...
随机推荐
- vue之事件监听v-on
1.背景 2.简单使用 2.1.做一个简单的点击计数器 <!DOCTYPE html> <html lang="en" xmlns:v-on="http ...
- [POI2008] POC-Trains 题解
前言 题目链接:洛谷. 时间复杂度和输入同阶的做法. 题意简述 有 \(n\)(\(n \leq 10^3\))个长 \(m\) 的字符串,\(q\)(\(q \leq 10^5\))次操作,交换两个 ...
- Orleans初体验
Orleans: 是一个跨平台框架,用于构建可靠且可缩放的分散式应用. 分布式应用定义为跨多个进程的应用,通常使用对等通信来超越硬件边界. 从单个本地服务器扩展到了云中数千个分布式.高度可用的应用. ...
- 高级工程师面试大全- spring篇
1.spring是什么 Spring是一个轻量级的IoC和AOP容器框架.是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求.主要包括以下七 ...
- 【牛客刷题】HJ10 字符个数统计
题目链接 简单的说这题就是字符串去重以后检查长度.如果用Java的话,可以遍历字符串,然后利用Set来进行去重,最后统计Set的size就可以了.但是如果是Go语言,则稍微麻烦点.基本思路就是用map ...
- Structures, unions, enumerations, and bitfields in ARM C and C++
Structures, unions, enumerations, and bitfields in ARM C and C++ Non-Confidential ARM DUI0375E ARM ...
- 【CMake系列】10-cmake测试集成googletest与第三方库自动化构建
cmake测试,使用ctest 可能不能满足我们的需求,需要我们使用更为强大的第三方测试框架,如googletest,完成项目中的测试工作 本篇文章将第三方测试框架 googletest,引入,同时也 ...
- k8s批量操作
批量删除Evicted状态pod kubectl -n gitee get pods | grep Evicted |awk '{print$1}'|xargs kubectl -n gitee de ...
- 【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。
这个东西是个非常古老的算法了,大概是2008年的东西,参考资料也有很多,不过基本上都是重复的.最近受一个朋友的需求,前后大概用了二十多天时间去研究,也有所成果,在这里简单的予以记录. 图像修 ...
- Ubuntu 安装 Docker Engine
Docker Engine (也称作 Docker CE) 是 Docker 官方的社区版包,它不包含在 Ubuntu 默认的存储库中.因此,你无法直接使用 apt install docker-ce ...