如何在 FFMPEG 中使用 Blend / tblend 过滤器与 t 变量和 Between 语句

2024-01-14

我想使用blend or tblend过滤器与t变量between陈述。我愿意接受其他能够达到相同效果的解决方案。

我知道图像可以在视频上转置,例如之间00:00:01.000 to 00:00:02.000:

ffmpeg -i input.mkv -i input.jpg -filter_complex \ "[0:v][1:v] overlay=10:10:enable='between(t,1,2)'" output.mkv

同时模糊视频可以通过smartblur:

ffmpeg -i input.mkv -vf "smartblur=enable='between(t,1,2)'" output.mkv

改变hue angle,例如90度,也可以这样做:

ffmpeg -i input.mkv -vf "hue=h=-90:enable='between(t,1,2)'" output.mkv

然而,我的搜索或官方文档中没有任何内容解释如何使用blend or tblend过滤器与t变量between陈述。我尝试了多种公式,但它们都会导致错误。这根本不可能吗?或者还有其他方法来构建命令?


根据examples https://ffmpeg.org/ffmpeg-filters.html#toc-Examples-41在文档中,我们可以将框架乘以评估条件。

示例(输入来自here https://superuser.com/a/1704747/635712):

ffmpeg -y -i in.mp4 -i in.gif -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_expr='A*if(between(T, 2, 6), 0.3, 1)+B*if(between(T, 2, 6), 0.7, 0)'" -vcodec libx264 -pix_fmt yuv444p -crf 17 -acodec copy out.mp4
  • A应用第一个视频流中的帧 -[v0].
  • B应用第二个视频流中的帧 -[v1].
  • if(between(T, 2, 6), 0.3, 1)被评估为0.3当时间在 2 到 6 秒之间时,评估为1否则。
  • if(between(T, 2, 6), 0.7, 0)被评估为0.7当时间在 2 到 6 秒之间时,评估为0否则。
  • 整个表达式计算为0.3*A + 0.7*B2 到 6 之间并且1*A + 0*B否则。

Sample output (between 2 and 6 seconds):
enter image description here

Note:
我认为确切时间存在错误,但这可能与我的输入有关。


我们也可以链两个blend如果需要的话可以过滤。
第一个混合应用一些混合效果,第二个混合选择何时使用该效果以及何时使用原始视频流。
例子:

ffmpeg -y -i in.mp4 -i in.gif -filter_complex "[1:v][0:v]scale2ref[v1][v0];[v0][v1]blend=all_mode=grainextract[b];[0:v][b]blend=all_expr='A*if(between(T, 2, 6), 0, 1)+B*if(between(T, 2, 6), 1, 0)'" -vcodec libx264 -pix_fmt yuv444p -crf 17 -acodec copy out.mp4

另一种选择是链接blend with overlay filter.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 FFMPEG 中使用 Blend / tblend 过滤器与 t 变量和 Between 语句 的相关文章

  • 拟合具有扭曲时基的正弦波

    我想知道在 Matlab 中拟合具有扭曲时基的正弦波的最佳方法 时间失真由 n 阶多项式 n 10 给出 其形式为t distort P t 例如 考虑失真t distort 8 12t 6t 2 t 3 这只是幂级数展开 t 2 3 这将
  • 如何在 C++ 中使用 LoadLibrary(..) 调用 kernel32.dll 函数 GetTickCount()

    我正在寻找一个在 Windows 机器上获取以毫秒为单位的时间的函数 本质上 我想调用这个 WinAPI 函数 GetTickCount 但我陷入了 使 用 LoadLibrary n 调用 GetTickCount 函数 部分 我搜索了每
  • 使用Python查明时区当前是否处于夏令时[重复]

    这个问题在这里已经有答案了 我们有一个在 GMT 时间运行的服务器 我需要编写一个 Python 脚本来确定当前 此时此刻 加利福尼亚州洛杉矶是否为夏令时 DST 我怎样才能做到这一点 我查看了 pytz 和 time 但我无法弄清楚 我意
  • 在 C++20 中获取当前日期/时间是线程安全的吗?

    简短的问题 在 C 17 之前 包括 C 17 C 不提供线程安全的方式来获取当前时间或日期 这个问题会在 C 20 中修复吗 长问题 获取当前时间和日期的唯一可移植方法是使用 std gmtime 或 std localtime 函数 这
  • 在 Android 和 iOS 上播放的视频/音频编解码器设置是什么

    哪些编解码器设置将生成可在 Android videoView 和 iOS UIWebView 上播放的有效视频 安卓 http developer android com guide appendix media formats html
  • 使用 xuggle 将 mp3 转换为 wav 出现异常

    我正在尝试将 mp3 转换为 wav 代码在这里 String mp3 F work pic2talk38512 mp3 String wav F work pic2talk38512 wav TranscodeAudioAndVideo
  • 如何让 Python 找到 ffprobe?

    I have ffmpeg and ffprobe安装在我的 mac macOS Sierra 上 并且我已将它们的路径添加到 PATH 中 我可以从终端运行它们 我正在尝试使用ffprobe使用以下代码获取视频文件的宽度和高度 impor
  • 如何在android中将时间转换为“时间之前”

    我的服务器 返回时间 2016 01 24T16 00 00 000Z I want 1 转换为字符串 2 我希望它在从服务器加载时显示 不久前 请 帮我 我认为主要有三种方式 a 内置选项使用SimpleDateFormat and 日期
  • 在 Ruby 中将 Time 类对象转换为 RFC3339

    谷歌日历 API v2 https developers google com google apps calendar v2 developers guide protocol的时间相关查询需要采用 RFC3339 格式 当我在 需要 时
  • 在 HTML5 中设置视频高度

    也许这是一个简单的问题 但它真的让我发疯 我只想设置 HTML5 视频的高度和宽度 我正在使用这段代码
  • 在 Twitter 上上传视频的最佳方式

    我必须从我的 java 应用程序将视频上 传到 Twitter 发布带有视频的推文文本 我使用 twitter4j 上传图像 效果很好 我对上传视频的最佳方式感到困惑 我在这个链接中找到了https github com mrisney t
  • 如何在Python中使用getopt/OPTARG?如果给出太多参数 (9),如何转移参数?

    如何在Python中使用getopt optarg 这是我如何做到这一点的示例 我通常使用相同的基本模板 import sys import getopt try opts args getopt getopt sys argv 1 m p
  • 在 Windows Phone 8 中以编程方式下载媒体文件

    我们的应用程序是基于视频 音频的应用程序 我们已将所有媒体上传到 Windows Azure 上 但需要方便用户点播下载音视频文件 以便在本地播放 所以我需要以编程方式下载音频 视频文件并将其保存在IsolatedStorage中 我们有每
  • 在 Java 中处理视频(DVD、.avi .mkv)

    在寻找了一个像样的 Java 视频播放库之后 我发现了问题 周围的每个人都在尖叫不要使用 JMF 因为它已经过时 过时并且需要用户安装它 其他替代方案 例如 VLCJ 如果可以工作的话似乎不错 但仍然相对不稳定并且依赖大量本机代码 并且至于
  • 连接 2 个迷你音频文件并循环播放并添加背景音乐

    我需要用循环连接 2 个小音频文件并在单个命令中添加背景音乐 我能够将两个音频文件与背景音乐连接起来 我上面给出的代码正在运行 ffmpeg i 1 mp3 i 2 mp3 i background mp3 filter complex 0
  • 加载 HTML 格式的大型视频文件

    这是我的问题 我想播放存储在 S3 存储桶中的大型视频文件 3 6Gb 但该文件似乎太大 并且加载 30 秒后页面崩溃 这是我播放视频的代码 var video document getElementById video const med
  • PHP 使用今天的日期生成一个随机数

    我正在尝试为内容块 在网页上 分配一个随机生成的数字 该数字基于今天的日期 无论是什么 和固定数字 由于某种原因 输出的数字种类存在巨大差异 例如 当我在本地测试我的代码时 生成的数字对我来说足够好 正数 但在实际的实时服务器上时 它们通常
  • 如何在 Go 中获取给定月份的第一个星期一?

    我正在尝试获取给定月份的第一个星期一 我能想到的最好方法是循环前 7 天 然后返回 Weekday Monday 有一个更好的方法吗 通过查看时间的 Weekday 您可以计算出第一个星期一 package main import fmt
  • 处理时区转换的 JavaScript 库

    是否有一个 JavaScript 库可以处理时区转换 并考虑 DST 规则和此类内容 我知道有类似的问题 但我见过的问题似乎都没有真正适合我的问题的答案 我想在时区 A 创建一个日期并能够对其进行操作 添加天数 小时等 然后将其转换为另一个
  • 在Excel中显示毫秒

    我正在尝试在 Excel 宏中显示毫秒 我有一列整数 它们是以毫秒为单位的时间戳 例如 28095200 是上午 7 48 15 200 我想在它旁边创建一个新列 以保持运行平均值并以hh mm ss 000格式 Dim Cel As Ra

随机推荐