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

ffmpeg翻页转场动效的安装及使用

文章目录

  • 前言
  • 一、背景
  • 二、选型分析
    • 2.1 ffmpeg自带的xfade滤镜
    • 2.2 ffmpeg使用GL Transition库
    • 2.3 xfade-easing项目
  • 三、安装
    • 3.1、安装依赖([参考](https://trac.ffmpeg.org/wiki/CompilationGuide/macOS#InstallingdependencieswithHomebrew))
    • 3.2、获取ffmpeg源码
    • 3.3、融合xfade-easing文件
    • 3.3、编译&安装
    • 3.4、验证
  • 四、使用
    • 4.1 xfade滤镜简易动效
    • 4.2 GL库翻书动效
  • 5、Todo
  • 总结


前言

  • FFmpeg 是一个开源的多媒体处理工具,可以用于录制、转换、编辑和播放音频、视频,以及其他多媒体文件和流。它是基于命令行的工具,支持多种平台(Windows、macOS、Linux)。

  • xfade 是 FFmpeg 中的一个滤镜,用于创建 转场效果(crossfade)。它可以在两段视频或两张图片之间生成平滑的过渡效果,例如淡入淡出、擦除、滑动等。

  • gl-transition 是一个使用 OpenGL 实现的动态转场效果库,广泛用于视频编辑和动态转场生成。它允许在视频或图片之间添加基于 GPU 的高性能视觉效果,比如渐变、模糊、溶解、翻转、波浪、像素化等特效。可搭配 FFmpeg 或其他工具,在命令行环境中批量生成带有特效的视频。


一、背景

最近玩了几个月AI绘画,画了几千张图了,目前希望能自动将一组图片拼接成视频,图片切换时使用转场动效。其中希望使用翻书的动画效果。
简易横划效果示例:
在这里插入图片描述

复杂书本翻页效果示例:
在这里插入图片描述

二、选型分析

2.1 ffmpeg自带的xfade滤镜

ffmpegv4.4以上自带xfade滤镜,官方文档地址:https://trac.ffmpeg.org/wiki/Xfade#Gallery
xfade支持常规的转场效果,如下:
在这里插入图片描述
但xfade不支持复杂转场效果,如书本翻页,而我想要的就是“书本翻页”。

2.2 ffmpeg使用GL Transition库

GL Transition支持一些更复杂酷炫的转场效果,官方示例:https://gl-transitions.com/gallery
在这里插入图片描述
ffmpeg使用gl-transition网上大多数文章提到的都是此项目:

https://github.com/transitive-bullshit/ffmpeg-gl-transition

但该项目已多年未维护,本人尝试使用最新的ffmpegV7.1编译,遇到很多问题。从issue和最后更新时间看,应该使用ffmpegV4.x版本会顺利些。但有点老没再考虑。

2.3 xfade-easing项目

从ffmpeg-gl-transition的issue中发现有人提到此项目:

https://github.com/scriptituk/xfade-easing

本文写作时此项目最新更新时间为2周前,很新的项目。从Readme文件中了解到支持2.1、2.2提到的所有动效,且原理性的说明也非常详细。于是按此方案实现。

三、安装

以mac电脑为例
我们参考ffpemg的官方安装指引xfade-easing的Readme文件中的说明即可

https://trac.ffmpeg.org/wiki/CompilationGuide/macOS
https://github.com/scriptituk/xfade-easing?tab=readme-ov-file#building-ffmpeg

文档内容不太清晰,结合两部分的文档整理如下:

3.1、安装依赖(参考)

brew install automake fdk-aac git lame libass libtool libvorbis libvpx \
opus sdl shtool texi2html theora wget x264 x265 xvid nasm \
glew glfw

其中前两行是ffmpeg官方文档提到的依赖,第三行glew、glfw是xfade文档提到的依赖

3.2、获取ffmpeg源码

可以github或官网下载压缩包,或直接克隆(本文编写时最新版本v7.1)

git clone http://source.ffmpeg.org/git/ffmpeg.gitcd ffmpeg./configure  --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libopus

3.3、融合xfade-easing文件

# 下载patch到ffmpeg根目录下,并执行
wget https://github.com/scriptituk/xfade-easing/raw/refs/heads/main/src/vf_xfade.patchpatch -b -p0 -i vf_xfade.patch# 下载xfade-easing.h 并移动到 libavfilter/
wget https://github.com/scriptituk/xfade-easing/raw/refs/heads/main/src/xfade-easing.h
mv xfade-easing.h libavfilter/

3.3、编译&安装

./configure  --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libopusmake ECFLAGS=-Wno-declaration-after-statementmake install

3.4、验证

ffmpeg -hide_banner --help filter=xfade |grep 'xfade AVOptions'

执行上述命令,返回结果有xfade AVOptions关键字即成功

四、使用

以文章开头的两个gif图demo为例,假设我们有两张尺寸一样的图片test1.jpegtest2.jpeg

4.1 xfade滤镜简易动效

在这里插入图片描述

 ffmpeg -loop 1 -t 3 -i test1.jpeg  -loop 1 -t 3 -i test2.jpeg -filter_complex "xfade=duration=1:offset=1:transition=revealleft" output.mp4

4.2 GL库翻书动效

在这里插入图片描述

ffmpeg -loop 1 -t 4 -i test1.jpeg  -loop 1 -t 1 -i test2.jpeg -filter_complex "xfade=duration=3:offset=1:easing=quartic-out:transition=gl_InvertedPageCurl" -y output.mp4

更多使用方式可以参阅文档,或留言交流

5、Todo

以下内容有空会更新,欢迎大家关注:

  • 添加背景音乐
  • 添加字幕
  • 开发stable diffusion / comfyUI 插件一键生成视频影集

总结

使用ffmpeg配合xfade滤镜、GL库可以实现各式各样的转场效果。本文提供了从0到1的使用教程,希望对大家有帮助。

欢迎大家点赞、关注博主~!

相关文章:

ffmpeg翻页转场动效的安装及使用

文章目录 前言一、背景二、选型分析2.1 ffmpeg自带的xfade滤镜2.2 ffmpeg使用GL Transition库2.3 xfade-easing项目 三、安装3.1、安装依赖([参考](https://trac.ffmpeg.org/wiki/CompilationGuide/macOS#InstallingdependencieswithHomebrew))3.2、获取…...

[RocketMQ] 发送重试机制与消费重试机制~

发送重试 RocketMQ 客户端发送消息时,由于网络故障等因素导致消息发送失败,这时客户端SDK会触发重试机制,尝试重新发送以达到调用成功的效果。 触发条件 客户端消息发送请求失败或超时。服务端节点处于重启或下线状态。服务端运行慢造成请…...

基于Redis的网关鉴权方案与性能优化

文章目录 前言一、微服务鉴权1.1 前端权限检查1.2 后端权限检查1.3 优缺点 二、网关鉴权2.1 接口权限存储至Redis2.2 网关鉴权做匹配 总结 前言 在微服务架构中,如何通过网关鉴权结合Redis缓存提升权限控制的效率与性能。首先,文章对比了两种常见的权限…...

计算机网络-L2TP VPN基础概念与原理

一、概述 前面学习了GRE和IPSec VPN,今天继续学习另外一个也很常见的VPN类型-L2TP VPN。 L2TP(Layer 2 Tunneling Protocol) 协议结合了L2F协议和PPTP协议的优点,是IETF有关二层隧道协议的工业标准。L2TP是虚拟私有拨号网VPDN&…...

Node.js day-01

01.Node.js 讲解 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端…...

vue el-dialog实现可拖拉

el-dialog实现拖拉&#xff0c;每次点击度居中显示&#xff0c;以下贴出代码具体实现&#xff0c;我是可以正常拖拉并且每次度显示在中间&#xff0c;效果还可以&#xff0c;需要的可以丢上去跑跑 组件部分&#xff1a; <el-dialog:visible.sync"dialogVisible"…...

go配置文件

https://github.com/spf13/viper viper golang中常用的配置文件工具为viper库&#xff0c;是一个第三方库。viper功能&#xff1a; 解析JSON、TOML、YAML、HCL等格式的配置文件。监听配置文件的变化(WatchConfig)&#xff0c;不需要重启程序就可以读到最新的值。...

C++ OpenGL学习笔记(2、绘制橙色三角形绘制、绿色随时间变化的三角形绘制)

相关文章链接 C OpenGL学习笔记&#xff08;1、Hello World空窗口程序&#xff09; 目录 绘制橙色三角形绘制1、主要修改内容有&#xff1a;1.1、在主程序的基础上增加如下3个函数1.2、另外在主程序外面新增3个全局变量1.3、编写两个shader程序文件 2、initModel()函数3、initS…...

项目搭建+删除(单/批)

一 : 删除没有单独的页面,在列表页面写 二 : 删除在列表的页面 1.删除(单/双)的按钮 ① : 在列表文档就绪函数的ajax里面,成功回调函数追加数据里写删除按钮 注意点 : 删除/修改/回显都是根据id来的,记得传id ② : 批删给批删按钮,定义批删的方法 one : 示例(单删) : //循环追…...

《小米创业思考》

《小米创业思考》是小米创始人雷军对小米创业历程的系统梳理和深度思考&#xff0c;蕴含着许多宝贵的创业经验与智慧&#xff0c;以下是主要内容&#xff1a; 创业初心与梦想 - 源于热爱与使命感&#xff1a;雷军及团队怀着对科技的热爱和让每个人享受科技乐趣的使命感创立小米…...

多种注意力机制详解及其源码

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

VMWare 的克隆操作

零、碎碎念 VMWare 的这个克隆操作很简单&#xff0c;单拎出来成贴的目的是方便后续使用。 一、操作步骤 1.1、在“源”服务器上点右键&#xff0c;选择“管理--克隆” 1.2、选择“虚拟机的当前状态”为基础制作克隆&#xff0c;如下图所示&#xff0c;然后点击“下一页” 1.3、…...

Y3编辑器教程7:界面编辑器

文章目录 一、简介1.1 导航栏1.2 画板1.3 场景界面1.4 控件1.4.1 空节点1.4.2 按钮1.4.3 图片1.4.4 模型1.4.5 文本1.4.6 输入框1.4.7 进度条1.4.8 列表 1.5 元件1.5.1 简介1.5.2 差异说明1.5.3 元件实例的覆盖、还原与禁止操作1.5.4 迷雾控件 1.6 属性1.7 事件&#xff08;动画…...

「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具

本篇将带你实现一个评分统计工具&#xff0c;用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果&#xff0c;并统计平均分。这一功能适合用于问卷调查或评分统计的场景。 关键词 UI互动应用评分统计状态管理数据处理多目标评分 一、功能说明 评分统计工具允许用…...

run postinstall error, please remove node_modules before retry!

下载 node_modules 报错&#xff1a;run postinstall error, please remove node_modules before retry! 原因&#xff1a;node 版本出现错误&#xff0c;我的项目之前是在 12 下运行的。解决方法&#xff1a; 先卸载node_modules清除缓存将node版本切换到12重新下载即可...

详细解读TISAX认证的意义

详细解读TISAX认证的意义&#xff0c;犹如揭开信息安全领域的一颗璀璨明珠&#xff0c;它不仅代表了企业在信息安全管理方面的卓越成就&#xff0c;更是通往全球汽车供应链信任桥梁的关键一环。TISAX&#xff0c;即“Trusted Information Security Assessment Exchange”&#…...

【开源项目】数字孪生轨道~经典开源项目数字孪生智慧轨道——开源工程及源码

飞渡科技数字孪生轨道可视化平台&#xff0c;基于国产数字孪生引擎&#xff0c;结合物联网IOT、大数据、激光雷达等技术&#xff0c;对交通轨道进行超远距、高精度、全天侯的监测&#xff0c;集成轨道交通运营数据&#xff0c;快速准确感知目标&#xff0c;筑牢轨交运营生命线。…...

云原生是什么

云原生是一种构建和运行应用程序的方法&#xff0c;它充分利用了云计算的优势。它不仅仅是指在云上运行应用程序&#xff0c;更重要的是指应用程序的设计、开发、部署和运维方式都充分考虑了云环境的特性&#xff0c;从而能够更好地利用云的弹性、可扩展性和灵活性。 更详细地…...

买卖股票的最佳时机 IV - 困难

************* C topic&#xff1a;188. 买卖股票的最佳时机 IV - 力扣&#xff08;LeetCode&#xff09; ************* Stock angin: Still stocks. Intuitively, it feels hard. For once: class Solution { public:int maxProfit(vector<int>& prices) {in…...

linux源码编译php提示:No package ‘oniguruma‘ found

编译遇到缺少Oniguruma开发包&#xff0c;处理办法1 安装epel仓库、安装 Oniguruma 开发包 [rootiZwz98gb9fzslgpnomg3ceZ php-8.1.29]# yum install epel-release [rootiZwz98gb9fzslgpnomg3ceZ php-8.1.29]# yum install oniguruma oniguruma-devel 方法2&#xff1a;去On…...

EasyAnimateV5-7b-zh-InP一键部署教程:基于Linux系统的快速安装指南

EasyAnimateV5-7b-zh-InP一键部署教程&#xff1a;基于Linux系统的快速安装指南 1. 引言 想快速在Linux系统上部署一个强大的视频生成模型吗&#xff1f;EasyAnimateV5-7b-zh-InP是一个22GB的图生视频模型&#xff0c;支持多分辨率视频生成&#xff0c;还能用中英文双语进行预…...

聊聊 Comsol 仿真方形锂离子电池那些事儿

comsol仿真 锂离子电池 电化学 仿真 comsol 方形锂离子电池的三维模型&#xff1a;三维模型有助于准确的评估电芯中的集流体和极耳等对电流、电位以及产热分布的影响。 模型基于三维 Newman 模型&#xff0c;其中包括了在颗粒尺度描述锂粒子插层和扩散的额外维度。 此外&#…...

Gemma-3 Pixel Studio实战教程:离线模式部署与本地模型权重缓存策略

Gemma-3 Pixel Studio实战教程&#xff1a;离线模式部署与本地模型权重缓存策略 1. 项目概述与核心价值 Gemma-3 Pixel Studio是基于Google最新开源Gemma-3-12b-it模型构建的多模态对话终端&#xff0c;将强大的文本理解能力与视觉感知功能完美结合。与传统对话系统相比&…...

本地硬盘装系统神器更新!WinToHDD v7.0,支持加密/多分区安装

软件下载 夸克下载&#xff1a;https://pan.quark.cn/s/8bb2d79a1f4c迅雷下载&#xff1a;https://pan.xunlei.com/s/VOottCVsfGa3nDKv07YreMVPA1?pwdve85#UC下载&#xff1a;https://pan.xunlei.com/s/VOottCVsfGa3nDKv07YreMVPA1?pwdve85# 软件介绍 前几天一直看见有群友…...

GY39传感器实战:从数据采集到环境监测应用

1. GY39传感器入门指南 第一次拿到GY39传感器时&#xff0c;我完全被它小巧的体积震惊了。这个只有拇指大小的模块&#xff0c;居然能同时测量气压、温湿度、光照强度四种环境参数。它的工作电压是3-5V&#xff0c;用普通的USB充电器就能供电&#xff0c;特别适合DIY项目。 GY3…...

【DeepSeek-R1背后的技术】系列七:冷启动——从“零”到“一”的智能启蒙

1. 冷启动&#xff1a;AI模型的"启蒙教育" 想象一下&#xff0c;你面前站着一个刚出生的婴儿&#xff0c;他对这个世界一无所知。如果你直接把他扔进大学课堂&#xff0c;会发生什么&#xff1f;他可能会哭闹、听不懂任何内容&#xff0c;甚至产生恐惧心理。这就是一…...

java篇26-Java匿名内部类、invoke方法、动态代理

一、匿名内部类 匿名内部类一般作为方法的参数&#xff0c;这个方法的形参为接口&#xff0c;而实参为匿名内部类&#xff08;可以理解为接口的对象&#xff09;并且重写了接口中的方法。 书写形式&#xff1a; new <接口名>(){ Overvide //重写方法 }例如&#xff1a; 定…...

RK3588上OpenCV+GStreamer播放RTSP卡成PPT?一个环境变量让帧率从7飙升到25+

RK3588视频开发实战&#xff1a;OpenCVGStreamer硬解码性能翻倍秘籍 在嵌入式视觉应用开发中&#xff0c;RK3588凭借其强大的多媒体处理能力成为众多开发者的首选平台。但当你在Python环境中使用OpenCV配合GStreamer进行RTSP视频流处理时&#xff0c;是否遇到过这样的尴尬&…...

Cursor API限制突破架构设计与系统实现方案

Cursor API限制突破架构设计与系统实现方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial request limit. / T…...

如何快速掌握单细胞分析:CELLxGENE新手必看的3个实用技巧

如何快速掌握单细胞分析&#xff1a;CELLxGENE新手必看的3个实用技巧 【免费下载链接】cellxgene An interactive explorer for single-cell transcriptomics data 项目地址: https://gitcode.com/gh_mirrors/ce/cellxgene 你是否曾经面对海量的单细胞转录组数据感到无从…...