FFmpeg - 如何高精度修剪?

2024-01-22

我对 FFmpeg 修剪视频的方式非常困惑,所以如果有人能帮助我,我将非常感激。 基本上,我想做的是:我有一个视频序列,我希望它在某一秒停止,将图像冻结几秒钟(如暂停),然后从同一帧再次再现。我可以说我正在处理三个视频:A.mp4(视频序列的第一部分)、B.mp4(冻结图像)和C.mp4(视频序列的第二部分)。此外,我还使用 filter_complex 执行叠加。

从静态图像生成视频的部分不是问题,我主要关心的是找到准确修剪和连接视频的方法。从其他帖子和来源中,我发现 FFmpeg 从那些可以强制关键帧的帧中进行修剪。然而,我得到的结果并不合适,因为我的视频A结束帧与开始帧不同C.

我正在使用的命令如下:

ffmpeg -y -i VideoSequence.mp4 -c:v libx264 -pix_fmt yuv420p \
-force_key_frames "expr: gte(t,n_forced * 15)" -t 30 VideoOut.mp4

[请注意,Filter Complex 内的所有内容都与 Overlay 有关,效果很好]

据我所知,生成的视频应该每 15 秒就有一个关键帧。现在,我想将视频切成两部分(“第 15 秒之前”和“第 15 秒之后”):

ffmpeg -y -ss 00:00:01 -i VideoOut.mp4 -t 14 -c copy A.mp4

ffmpeg -y -ss 00:00:15 -i VideoOut.mp4 -t 5 -c copy C.mp4 

如前所述,我希望 A.mp4 的结尾与 C.mp4 的开头“匹配”(以帧精度),但我获得的结果远非完美。

非常感谢您,任何形式的帮助将不胜感激!


假设你的最终目标是我希望它在某一秒停止,将图像冻结几秒钟(如暂停),然后从同一帧再次再现。,当前的方法具有多个视频生成,是不必要的浪费。

以下是使用一个命令执行此操作的方法(假设视频为 25 FPS)。

ffmpeg -i original.mp4 -filter_complex
       "[0]split[a][b];
        [a]trim=1:15,loop=75:1:349,setpts=N/FRAME_RATE/TB[pre];
        [b]trim=15,setpts=N/FRAME_RATE/TB[post];
        [0]atrim=1:15,asetpts=N/SR/TB[apre];
        [0]atrim=15,asetpts=N/SR/TB[apost];
        [pre][apre][post][apost]concat=a=1[v][a]"
       -map "[v]" -map "[a]" paused.mp4

以下是过滤图中发生的情况:

首先,视频被分割成两个相同的流。然后第一个流从第 2 秒开始到第 15 秒结束被修剪。在环路滤波器中,1从(最后一帧)开始的帧#349循环播放 75 帧。然后时间戳会被规范化,因为修剪或循环过滤器不会这样做。第二个分割流被修剪为从第 16 秒开始,其时间戳重置,并且两个流使用 concat 连接。如果您需要在联合流之上覆盖某些内容,请插入一个overlayconcat后过滤。

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

FFmpeg - 如何高精度修剪? 的相关文章

  • 如何使用ffmpeg从avi生成gif? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用以下命令将视频的一部分提取到动画 gif 中 ffmpeg i video avi t 5 out gif 它会生成一个 g
  • 将每分钟的 MP3 导出为单独的 WAV

    这绝对是一个奇怪的问题 但我正在寻找一种方法 将 60 分钟的 mp3 混合拆分为 60 个单独的 1 分钟长的 wav 文件 以便与 Echonest 等音频指纹识别 API 一起使用 这是否可以在单个 ffmpeg 命令中实现 或者我是
  • 使用 ffmpeg 在纯色背景上叠加延时视频

    我有很多名为的主页屏幕截图homescreen000001 png homescreen000002 png等 我正在尝试使用 ffmpeg 创建这些图像的延时视频 当我运行以下命令时 它通常可以正常工作 ffmpeg f image2 i
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • 使用 ffmpeg 从 unix 命令批量将 wav 文件转换为 16 位

    我有一个由许多子文件夹组成的文件夹 每个子文件夹都有其他子文件夹 其中包含 wav 文件 我想像这样转换所有文件 ffmpeg i BmBmGG BmBmBmBm wav acodec pcm s16le ar 44100 BmBmGG B
  • 访问 AVFrame 的每个像素

    我需要访问 FFMPEG 的 AVFrame 对象的每个像素信息 如果是 RGB 则每个像素的每种颜色 R G 和 B 我怎样才能做到这一点 如果您已经前进到正确的框架 类似于 img convert ctx ffmpeg sws getC
  • 重新采样 H264 视频以降低帧速率,同时保持高图像质量

    以下是感兴趣的视频的 mplayer 输出 br carina tmp mplayer foo mov mplayer Symbol ff codec bmp tags has different size in shared object
  • 如何在Android项目中使用libffmpeg.so?

    我正在尝试在 Android 中创建一个屏幕录制应用程序 为此 我使用 FFmpeg 我已经创建了 libffmpeg so 文件 现在我想在 Android 项目中使用相同的方法来调用它的本机函数 我怎样才能做到这一点 本教程提供了有关此
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • FFmpeg - 来自 NodeJS 的 RTMP 流,流比实时更快

    我的目标是在 Node 中渲染画布 并将该画布流式传输到 RTMP 服务器 最终是 Twitch 但现在我正在在本地 RTMP 服务器上测试 流式传输到 RTMP 的标准方式似乎是ffmpeg 所以我使用它 从 NodeJS 中作为子进程生
  • OpenCV VideoWriter 未写入 Output.avi

    我正在尝试编写一段简单的代码来获取视频 裁剪视频并写入输出文件 系统设置 OS Windows 10 Conda Environment Python Version 3 7 OpenCV Version 3 4 2 ffmpeg Vers
  • Chromium 中的 MP4 编解码器支持

    我们已将 Chromium 嵌入式框架集成到我们的 Windows 游戏中 以允许我们从应用程序内渲染网页 并且一切正常 除了 MP4 视频 据我所知 由于许可问题 Chromium 不包含此编解码器 但任何人都可以提供有关我们如何添加支持
  • Node.js - 将数据缓冲到 Ffmpeg

    我使用 Node js 和 Ffmpeg 来创建动画 因为我试图避免第三方 avi mp4 解析器 所以我决定将动画输出为原始 rgb24 数据文件 然后使用一些程序将其转换为 mp4 文件 我发现 Ffmpeg 是免费且开源的 它完全可以
  • 将 ffmpeg 编译为独立二进制文件

    我正在尝试编译ffmpeg作为独立的二进制文件 因为我想在 AWS lambda 中使用它 我可以让事情在我正在编译的服务器上正常工作 但是如果我复制二进制文件并从另一台服务器运行它 我会得到 ffmpeg error while load
  • 连接 2 个迷你音频文件并循环播放并添加背景音乐

    我需要用循环连接 2 个小音频文件并在单个命令中添加背景音乐 我能够将两个音频文件与背景音乐连接起来 我上面给出的代码正在运行 ffmpeg i 1 mp3 i 2 mp3 i background mp3 filter complex 0
  • FFmpeg av_read_frame 无法正确读取帧?

    好吧 我已经下载了一些 yuv 格式的原始 UHD 序列 并在 mp4 容器中使用 ffmpeg 对其进行编码 h264 4 4 4 100 质量 25fps 当我使用 ffprobe 找出编码了多少帧时 我得到 600 所以这是 24 秒
  • ffmpeg 配置复杂过滤器时出错

    ffmpeg 命令存在一些问题 也许有人可以指出我正确的方向 我使用此链接来构建我的命令 那么问题 https stackoverflow com questions 7333232 how to concatenate two mp4 f
  • id3 图像编辑后播放 mp3 时遇到问题

    由于硬件限制 我们生产的软件试图确保导入到其库中的任何音频文件 准备复制到硬件上 都是可接受的比特率 最近 我们开始使用 FFmpeg 将许多不同的音频类型转换为 mp3 以便在我们的硬件上导入和使用它们 虽然转换工作正常并且 mp3 文件
  • 如何使用 ffmpeg av_seek_frame() 在具有帧号的情况下读取任何帧

    int64 t timeBase timeBase int64 t pavStrm gt time base num AV TIME BASE int64 t pavStrm gt time base den int64 t seekTar
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何

随机推荐

  • Shiny DT::renderDataTable 的“全选”复选框

    我想要一个复选框 用于选择 Shiny 中标准 DT renderDataTable 中显示的所有行 显示是关键 因为您应用的过滤器和整个数据表之间存在差异 是否有任何 DT 扩展可以做到这一点 我的编码技能很基础 因此我无法编写等效的 J
  • libgdx 中的多色文本

    我发现夜间构建中的 LibGDX 中有一个新组件 TextArea这是scene2d ui包裹 拥有这样的组件真是太好了 非常易于使用 但我缺少的是对多色文本的一些支持 我想用不同的颜色突出显示文本中的一些关键字 但我不知道如何使用当前的
  • @Autowired 和 @Service 从控制器工作,但不从不同的包工作

    我需要帮助理解背后的概念 Autowired and Service 我有一个 DAO 定义为 Service和控制器 Autowired一切看起来都很好 但是 我使用相同的 Autowired在不同的班级 那么它不起作用 Example
  • 从 Google 表格中的另一张表格左侧进行 VLOOKUP

    我有一个电子表格 该电子表格是在 Google 表格中我自己的电子表格外部管理的 我正在尝试将数据从外部工作表提取到我的工作表中 以便我有一个集中位置来显示与我相关的任务项 这是我认为可行的公式 VLOOKUP My Name IMPORT
  • 通过索引访问字符串枚举

    我在 C 中有一个枚举 索引需要用字符串表示 String 类型的 Swift 枚举如何通过整数索引使用 我想将枚举复制到 Swift 将类型设置为字符串并定义所有原始值以显示文本 然后使用 C 枚举值提取 Swift String 枚举的
  • 了解 constexpr 变量初始化的完整表达式

    下面的程序编译成功 https godbolt org z 3c1xsh6oz与所有主要编译器 struct S constexpr S const S constexpr S default int main void S s1 cons
  • Scipy的solve_ivp函数的文档中字母k是什么意思?

    Solve ivp 是 Scipy 中的初始值问题求解器函数 简单来说 scipy integrate solve ivp 乐趣 t span y0 方法 RK45 t eval 无 dense output False 事件 无 向量化
  • 无法使用 Scala 在 Apache Spark 中执行用户定义的函数

    我有以下数据框 time stamp 0 sender ip 1 receiver ip 2 s port 3 r port 4 acknum 5 winnum 6 len 7 count 06 36 16 293711 10 0 0 1
  • SDK 管理器的 Extras 文件夹中缺少 Google Play 服务

    所以基本上我在 Android SDK Manager 的 Extras 文件夹中找不到安装 下载 Google Play 服务的选项 可能的原因是什么 同时有人可以提供从网络下载该库的链接吗 我遇到了同样的问题 最后找到了一个对我有用的解
  • 在 Python 中迭代并从 Web 中提取表并保存为 Excel 文件

    我想迭代并从链接中提取表here http zjj sz gov cn ztfw gcjs xmxx jgysba 然后另存为excel文件 我怎样才能做到这一点 谢谢 到目前为止我的代码 import pandas as pd impor
  • 在具有相同元素名称的 FOR XML 路径 T-SQL 查询中多次使用属性

    我正在尝试使用 FOR XML 路径在 SQL 2008 中创建 xml 输出 这工作正常
  • 如何使用 CSS 将 HTML 中的 div 元素内的图像垂直居中?

    我有一个这样的标记 div img div div 高于 img div height 100px img height dynamic value smaller than 100px 我需要图像位于 div 的中间 其上方和下方具有相同
  • 无法通过 rebase 拉取

    我收到这条消息 Cannot pull with rebase You have unstaged changes Please commit or stash them 是的 我有一些未提交的更改 我搜索了一种方法 在从拉取中获得的新代码
  • Apple 二进制文件被拒绝 (2.16)

    我的应用程序需要用户当前位置来向他显示前往谷歌地图中特定位置的方向 下面是在网络视图上显示位置的代码 self getDirectionsWebView loadRequest NSURLRequest requestWithURL NSU
  • TailwindCSS 中的中心固定元素

    当成功验证页面时 我会出现一条闪现消息 我正在尝试弄清楚如何将其在任何设备上水平居中 我正在使用 TailwindCSS 来调整 div 的位置并尝试过fixed and absolute确保它出现在我的内容之上 但使用类似的属性left
  • 带 blit 的 Matplotlib 动画——如何更新绘图标题?

    我使用 matplotlib 通过复制背景和位块传输来制作绘图动画 f Figure tight layout True canvas FigureCanvasTkAgg f master pframe canvas get tk widg
  • django admin TinyMCE 集成

    这很奇怪 我已经安装并配置了 django tinymce 但它似乎不适用于 django admin 这适用于 Safari class ArticleAdmin admin ModelAdmin formfield overrides
  • 如何最好地开发 Google Sheets 脚本和 Git 版本控制

    我是开发 Google Sheets 脚本的新手 我有从 krlaframboise SmartThings 分叉的代码 想要添加一些内容并将其提交到我的 Github 分叉中 显然我可以在工作表脚本编辑器中进行编辑并将它们粘贴回我的 gi
  • 如何从 Maven 获得对版本组中所有工件的依赖?

    我是 Maven 新手 我第一次尝试构建一个项目 我想写一些依赖于apache lucene的代码 这是一个Maven 中的工件列表 http mvnrepository com artifact org apache lucene我想要得
  • FFmpeg - 如何高精度修剪?

    我对 FFmpeg 修剪视频的方式非常困惑 所以如果有人能帮助我 我将非常感激 基本上 我想做的是 我有一个视频序列 我希望它在某一秒停止 将图像冻结几秒钟 如暂停 然后从同一帧再次再现 我可以说我正在处理三个视频 A mp4 视频序列的第