当前位置: 首页 > 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…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...