前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >FFmpeg GL-transition转场的简单使用体验

FFmpeg GL-transition转场的简单使用体验

作者头像
乔达摩@嘿
发布于 2023-09-27 00:25:49
发布于 2023-09-27 00:25:49
3.2K00
代码可运行
举报
文章被收录于专栏:嘿dotNet嘿dotNet
运行总次数:0
代码可运行

写在前面

最近在处理视频,遇到两个视频之间的转场用原生的 xfade写起来很痛苦,实现成本高,难度大;我这里主要用的FFmpeg,就想找一个插件专门干转场这个事;搜索了一翻后找到 GL-transition这个转场神器;

GLTransitions 简介

GLTransitions(https://gl-transitions.com/) 是一款开源项目,主要提供了大量的视频转场动画效果。这些效果基于 GLSL ES 的 Fragment Shader 来实现,具有高度定制化和跨平台的特点。

下面是官网的例子:

https://www.bilibili.com/video/BV1Nh4y1h7EV/

https://www.bilibili.com/video/BV1jw411m7q7/

从上面例子来看,如果不用插件自己实现还是非常复杂的;FFmpeg整合后GLTransition的转场滤镜有76个,这是网友整理的效果:

这是76个滤镜的名称:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"Angular",
"BlurDirectional",
"BlurLinear",
"BlurZooming",
"Bounce",
"BowTieH",
"BowTieV",
"Burn",
"ButterflyWaveScrawler",
"Checker",
"Circle",
"CircleCrop",
"CircleOpen",
"ColorPhase",
"CrossHatch",
"CrossWarp",
"CrossZoom",
"Cube",
"Directional",
"DirectionalEasing",
"DirectionalPixelate",
"DirectionalRotate",
"DirectionalWarp",
"Dreamy",
"DreamyZoom",
"Fade",
"Fadecolor",
"FadeGrayScale",
"Flyeye",
"FractalNoise",
"GridFlip",
"Heart",
"Hexagonalize",
"InvertedPageCurl",
"Jaws",
"Kaleidoscope",
"LSD",
"LeftRight",
"LinearBlur",
"Luma",
"Mosaic",
"Morphology",
"Pinwheel",
"PolarFunction",
"PolkaDotsCurtain",
"RandomSquares",
"Ripple",
"Rotate",
"RotateScaleFade",
"SimpleZoom",
"SquaresWire",
"StereoViewer",
"Swap",
"Swirl",
"TangentialBlur",
"TileableRotate",
"UndulatingBurnOut",
"WaterDrop",
"Wind",
"WindowBlinds",
"WindowSlice",
"ZoomInCircles",
"barSwipe",
"colourDistance",
"crazyParametricFun",
"crosshatch",
"cubeSpinFade",
"displacementMap",
"doorway",
"fadeBlack",
"glitchMemories",
"invertedPageCurl",
"morph",
"perlin",
"radialBlur",
"squaresWire",
"swap",
"valentine",
"watercolour",
"windLeft"

自己实现

1、安装

正式编译安装

正式的安装无论是Linux还是Linux,还是都是需要重新编译FFmpeg,并把这个项目https://github.com/transitive-bullshit/ffmpeg-gl-transition 编译进去

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure --prefix=/usr/local  
...
--enable-filter=gltransition --extra-libs='-lGLEW -lglfw'
...

看到这个--enable-filter=gltransition启用了就行

后面就可以直接使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg -i media/0.mp4 -i media/1.mp4 -filter_complex gltransition -y out.mp4

测试体验安装

由于编译安装ffmpeg-gl-transition 有一定的门槛,这里可以体验nodejs实现的版本:ffmpeg-concat

1、先确定安装好ffmpeg;

2、安装好node.js

3、安装ffmpeg-concat: npm install -g ffmpeg-concat (可能需要魔法上网,装不上的话记得自己配置npm的代理)

我暂时也是用这种方式体验的;

(ps:这种方式临时文件大)

使用测试

我准备好了两个视频:input2.mp4 input3.mp4

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg-concat -d 1000 -t cube  -o cube1000.mp4 input2.mp4 input3.mp4

参数释义:

Usage: cli [options] <videos...>

Options: -V, --version 输出版本 -o, --output 输出视频路径 -t, --transition-name gl-transition 转场名称 -d, --transition-duration 转场的时长毫秒(默认:500) -T, --transitions 加载转场的json文件路径 -f, --frame-format 临时帧图片的格式 (default: "raw") -c, --concurrency 并发处理的视频数量 (default: 4) -C, --no-cleanup-frames 不清空临时的帧图片 -v, --verbose ffmpeg调试模式verbose debug日志开启 -O, --temp-dir

临时帧图片的存储位置

-h, --help output usage information

由上可知,以上命令的含义是: 将input2/3.mp4 两个视频拼接起来,并且在中间使用"cube"这个转场衔接,转场持续1000ms;

总结

有此基本使用示例,那我们在通过变换参数的情况下,得到各种视频转场效果就显得轻而易举了;当然,看起来其实还可以通过加载json的方式实现自定义转场

引用

https://blog.csdn.net/w839687571/article/details/122013299

https://www.youtube.com/watch?v=PWp14WLzxDI

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
CSS3 Media Queries模板
那么今天我们就针对上面的问题,一起来探讨一下CSS3 Media Queries在各种不同设备(桌面,手机,笔记本,ios等)下的模板制作。那么Media Queries是如何工作的?那么有关于他的工作原理大家要是感兴趣的话可以参考《CSS3 Media Queries》一文,里面已经做过详细的介绍,这里就不在进行过多的阐述。
李维亮
2021/07/09
1.1K0
随方逐圆--全面理解CSS媒体查询
在CSS2中,媒体查询只使用于<style>和<link>标签中,以media属性存在;media属性用于为不同的媒介类型规定不同的样式,而真正广泛使用的媒介类型是'screen'、'print'和'all'
江米小枣
2020/06/15
1.4K0
CSS less 基础
在 Node.js 环境中使用 Less : npm install -g less 在浏览器环境中使用 Less : <link rel="stylesheet/less" type="text/css" href="styles.less" /> <script src="//cdnjs.cloudflare.com/ajax/libs/less.js/3.11.1/less.min.js" ></script>
郭顺发
2023/07/17
1450
【必备】史上最全的浏览器 CSS & JS Hack 手册(转载)
 浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异。因此,浏览器兼容成为前端开发人员的必备技能。如果有一份浏览器 Hack 手册,那查询起来就方便多了。这篇文章就向大家分享 Browserhacks 帮我们从网络上收集的各个浏览器特定的 CSS & JavaScript Hack,记得推荐和分享啊!
李维亮
2021/07/08
5380
CSS编码规范
CSS作为网页样式的描述语言,在百度一直有着广泛的应用。本文档的目标是使CSS代码风格保持一致,容易被理解和被维护。
java攻城狮
2020/10/10
1.5K0
30+有用的CSS代码片段
在一篇文章中收集所有的CSS代码片段几乎是不可能的事情,但是我们这里列出了一些相对于其他的更有用的代码片段,不要被这些代码的长度所吓到,因为它们都很容易实现,并且具有良好的文档。除了那些解决常见的恼人的问题外,也包含了一些解决新问题的新技术。 1.垂直对齐 如果你之前遇到过这个问题,你就应该知道它是多么的烦人,幸运的是,现在你可以使用CSS3变换来解决这个问题: .vc{ position: relative; top: 50%; -webkit-transform: transl
前朝楚水
2018/04/02
1K0
less介绍
less是一门css预处理语言,目的是使CSS更易维护和扩展,可以运行在Node或者浏览器端。
用户7962184
2020/11/20
7220
【编码规范】CSS编码风格指南
CSS 作为网页样式的描述语言,在百度一直有着广泛的应用。本文档的目标是使 CSS 代码风格保持一致,容易被理解和被维护。
一尾流莺
2022/12/10
1.1K0
postcss-lazysprite: 一种生成CSS 雪碧图的懒惰姿势
postcss-lazysprite 是一个基于PostCSS 开发的用于生成雪碧图图片及其CSS 的插件,经过半年持续迭代,现已稳定用在旗下两款产品的Web 业务中。其与市面上的雪碧图插件不同在于生成雪碧图的“懒惰”姿势。 前言 前端界,伴随着雪碧图这个概念出现,自动化产生雪碧图这类工具就层出不穷。无论是早期GUI 工具,还是现在流行的配合Gulp/Grunt/Webpack 这类构建工具而产生的雪碧图插件。总之是百花齐放,长江后浪推前浪,后浪死在沙滩上。 根据输入方式的不同,现在市面上基于Node.js
Jeff
2018/01/22
1.8K0
Sass控制命令及函数知识整理
声明:   请尊重博客园原创精神,转载或使用图片请注明:   博主:xing.org1^   出处:http://www.cnblogs.com/padding1015/ 特别说明: 没有sass基础请移步:【Sass-学习笔记【基础篇】】http://www.cnblogs.com/padding1015/articles/7056323.html 最底部附结构图(实在是结构图太长了没办法)2017-07-07  20:17:17  正文 一、Sass的控制命令  2017-06-22  09:1
xing.org1^
2018/05/17
3.5K0
基于 CSS3 Media Queries 的 HTML5 应用
先来介绍下 media,确切的说应该是 CSS media queries(CSS 媒体查询),媒体查询包含了一个媒体类型和至少一个使用如宽度、高度和颜色等媒体属性来限制样式表范围的表达式。CSS3
HT for Web
2018/01/03
1.1K0
基于 CSS3 Media Queries 的 HTML5 应用
Sass-学习笔记【进阶篇】
特别说明: 没有sass基础请移步:【Sass-学习笔记【基础篇】】http://www.cnblogs.com/padding1015/articles/7056323.html 最底部附结构图(实
xing.org1^
2018/05/17
4.6K0
Less 基础知识详解:深入了解 Less 如何编写样式
Less(Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言。,它扩展了CSS(层叠样式表)的功能并提供了更灵活、更强大的样式定义和管理机制。通过使用 Less,开发人员可以编写可维护、可重用的样式代码,并以简洁的语法实现复杂的样式效果。本文将介绍 Less 的基本概念和特性,以及如何使用它来简化 CSS 开发过程。想要学习更多的知识,可访问 犀牛书 的 Less 中文文档。
物立
2023/06/20
7900
Less 基础知识详解:深入了解 Less 如何编写样式
【前端攻略--HTML/CSS】媒体查询
1)媒体查询 @media 是个好东西,至少对像我一样刚入行的小前端做响应式是个不错的选择。
野原测试开发
2019/07/10
2.2K0
移动端解决一像素边框问题。拿走不谢,border.css
@charset "utf-8"; .border, .border-top, .border-right, .border-bottom, .border-left, .border-topbottom, .border-rightleft, .border-topleft, .border-rightbottom, .border-topright, .border-bottomleft { position: relative; } .border::before, .border-top::
用户7413032
2020/06/11
7880
CSS中的media(媒体查询)详解
媒体查询允许您根据屏幕尺寸、设备方向、分辨率和其他属性来调整网页的布局和样式,以实现响应式设计。
码客说
2024/03/29
6.3K0
pc端屏幕显示设置缩放比例对页面布局的适配
利用device-pixel-ratio单独适配像素比 @media all and (-moz-min-device-pixel-ratio: 1.09) and (-moz-max-device-pixel-ratio: 1.18), (-webkit-min-device-pixel-ratio: 1.09) and (-webkit-max-device-pixel-ratio: 1.18), (min-resolution: 1.09dppx) and (max-resolutio
李维亮
2022/12/03
1.3K0
11 个 CSS 知识搭配 11 个 JS 特性 (实用合集)
这篇文章我会介绍 11 在开发过程中经常遇到的 CSS 相关知识点,以及 11 个有趣亦实用的 JavaScript 特性。
用户1462769
2019/10/16
9440
CSS预处理器的对比 — sass、less和stylus
本文根据Johnathan Croom的《sass vs. less vs. stylus: Preprocessor Shootout》所译,整个译文带有我们自己的理解与思想,如果译得不好或不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less-vs-stylus-a-preprocessor-shootout/,以及作者相关信息 ——作者:Johnathan Croom
laixiangran
2018/04/11
4.8K0
CSS预处理器的对比 — sass、less和stylus
CSS预处理器之SCSS
变量支持块级作用域,嵌套规则内定义的变量只能在嵌套规则内使用(局部变量),不在嵌套规则内定义的变量则可在任何地方使用(全局变量)。将局部变量转换为全局变量可以添加 !global 声明
小小杰啊
2022/12/21
4K0
相关推荐
CSS3 Media Queries模板
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 写在前面
  • GLTransitions 简介
  • 自己实现
    • 1、安装
      • 正式编译安装
      • 测试体验安装
  • 总结
  • 引用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档