在关键帧之间剪切视频而不使用 ffmpeg 重新编码整个视频?

2023-12-29

我想在任何特定时间戳的开头剪切视频,并且需要precise,所以最近的关键帧不够好。

另外,这些视频相当长——一个小时或更长时间——所以我想避免重新编码如果可能的话,将其全部重新编码,否则仅重新编码总持续时间的最小部分。因此,希望最大限度地利用-vcodec copy.

我怎样才能使用完成这个ffmpeg?

注意:请参阅下面的场景和我自己的可能解决方案的粗略想法。


设想:

  • Original video
    • 1:00:00 的长度
    • 每10秒有一个关键帧
  • Desired cut:
    • 从 0:01:35 到结束
  • Attempt #1:
    • Using -ss 0:01:35 -i blah.mp4 -vcodec copy,结果是一个文件,其中:
    • 音频从 0:01:30 开始
    • 视频也从 0:01:30 开始
    • 这太早开始音频和视频
  • using -i blah.mp4 -ss 0:01:35 -vcodec copy, what results is a file where:
    • 音频从 0:01:35 开始,
    • but the video is blank/ black for the first 5 seconds,
      • 直到 0:01:40 视频开始时
    • 这会准时开始音频, 但视频开始太晚了

粗略的想法

  • (1) cut 0:01:30 to 0:01:40
    • 重新编码以获得新的关键帧, 包括目标时间 0:01:35 的一个
    • 然后将其剪切以获得从 0:01:35 到 0:01:40 的 5 秒
  • (2) cut 0:01:40 through till the end
    • 无需重新编码,使用-vcodec copy
  • (3) ffmpeg concat第一个短片(第 5 个第二个) 与第二个长剪辑

我知道/可以计算出 (2) 和 (3) 的命令,但不确定 (1) 需要哪些命令。


列出关键帧的时间戳:

ffprobe -v error -select_streams v:0 -skip_frame nokey -show_entries frame=pkt_pts_time -of csv=p=0 input.mp4

它会输出类似以下内容:

0.000000
2.502000
3.795000
6.131000
10.344000
12.554000
16.266000
...

假设您要删除时间戳 0 到 5,然后流复制 https://ffmpeg.org/ffmpeg.html#Stream-copy其余的。最近的后续关键帧是 6.131。

将 5 重新编码为 6.131。确保输入和输出匹配属性和格式。对于 MP4,默认设置应该可以完成大部分工作(假设 H.264/AAC),但您可能必须手动匹配配置文件 https://trac.ffmpeg.org/wiki/Encode/H.264#Profile.

ffmpeg -i input.mp4 -ss 5 -to 6.131 trimmed.mp4

Make input.txt为了连接解复用器 https://ffmpeg.org/ffmpeg-formats.html#concat:

file 'trimmed.mp4'
file 'input.mp4'
inpoint 6.131

连接:

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

在关键帧之间剪切视频而不使用 ffmpeg 重新编码整个视频? 的相关文章

  • 如何将ffmpeg中的ataenoise迁移到我自己的项目中?

    这是 ataenoise 滤波器的入口 libavfilter vf ataenoise c static int filter slice AVFilterContext ctx void arg int jobnr int nb job
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • C#中图像制作视频的工作方式

    有人有已知的可靠方法来从一系列图像文件创建视频吗 在你因为我在发布问题之前没有寻找答案而对我进行批评之前 以及在你发出诸如 使用 FFMPEG 之类的简单消息之前 请阅读此消息的其余部分 我正在尝试从一系列图像 jpg bmp 等 创建视频
  • 如何在 sqlite3 数据库中存储音频文件并在 iphone 中播放它们?

    我想在数据库中存储音频文件 任何支持 mp3 wav 和 iphone 的格式 并在 iPhone 上播放它们 知道如何做到这一点吗 我不知道为什么你想将音频文件存储在 SQL 数据库中 但 sqlite3 支持 BLOB 因此 将它们存储
  • 如何在声音输入时触发振动?

    我正在尝试创建一个 Android 应用程序 在其中过滤蜂鸣声的一个特定频率并使手机振动 我正在从移动设备的 MIC 获取输入并使用 MediaRecorder 类 通过使用该类 我可以录制 保存和播放输入 现在我需要我的手机在发出蜂鸣声
  • 为什么 Windows 只允许一个应用程序访问网络摄像头? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我一直在尝试用 C 制作一个示例网络摄像头应用程序 我发现该应用程序无法同时运行 Skype 或 Oovoo 或任何其他应用程序运行 反之亦然 为什么
  • 视频无法使用 Paperclip Gem - Rails 中的 ffmpeg 上传

    我可以上传图像 但是 当我尝试上传视频时 它会显示为黑屏 并且播放按钮不起作用 我不确定我哪里错了 我需要视频播放器才能实现此功能吗 这可能是一个简单的解决方案 但是 我是 Rails 新手 任何帮助是极大的赞赏 谢谢 邮政模型 class
  • 音乐分析软件[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 问候 我可能已经想到了这一点 但有人知道 Last fm 之前是否使用某种形式的开源项目对音乐进行分析
  • Motorola Android 2.2 相机忽略 EXTRA_OUTPUT 参数

    我以编程方式打开相机来拍摄视频 我告诉相机使用如下代码将视频文件放置到指定位置 Intent intent new Intent MediaStore ACTION VIDEO CAPTURE File out new File sdcar
  • 如何使用 Android 手机通话时播放声音?

    是否可以通过编程方式与电话进行交互 例如 您可以通过程序向呼叫者播放音频吗 Google 尚未公开任何允许我们向特定正在进行的调用提供数据的 API 不过 您可以控制通话 检查这篇文章 here http prasanta paul blo
  • 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

    我正在使用 OpenCV 开发一个 Python 模块 该模块连接到 RTSP 流以对视频执行一些预处理 主要是降低 fps 和分辨率 然后将其存储在文件系统中 但是 即使在尝试了几种编解码器 寻找类似的开发之后 我总是得到一个空的视频 我
  • 在 Raspberry Pi 4 上的多个输出设备上播放多个 mp3 文件

    我需要 4 8 个同时播放立体声音频音乐频道 连续播放 SD 卡上特定文件夹中的 mp3 音乐 Working 板载 3 5 音频插孔 USB声卡正常播放音乐 Problem 但一旦我尝试在树莓派上使用带有 USB 声卡的第三个音频输出 其
  • 如何获取视频时长(以秒为单位)? [复制]

    这个问题在这里已经有答案了 如何获取以秒为单位的视频时长 我尝试过的 ffmpeg i file flv 2 gt 1 grep Duration Duration 00 39 43 08 start 0 040000 bitrate 38
  • 尝试在 Android 上使用 FFMPEG。编译但是还是不行

    首先 我尝试使用 ffmpeg 将图像数组编译成 Android 上的视频 我已经遵循了各种在线教程 并且已经能够编译 Android 的库 但仍然需要项目运行 我现在使用的存储库可以在这里找到 https github com Batte
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh
  • 如何修复网站 iframe 错误?

    当我访问此网址时 警告 推荐使用一些广告拦截器 网页链接加载良好 没有错误 但是 当我尝试通过加载同一页面时iframe在我的html代码中 出现错误 我的html代码
  • 如何设置视频文件的预览,从输入类型='文件'中选择

    在我的模块之一中 我需要从 input type file 浏览视频 之后我需要在开始上传之前显示选定的视频 我使用基本的 HTML 标签来显示 但它不起作用 这是代码 document on change file multi video
  • ffmpeg视频已压缩但无法在浏览器中播放

    我已经集成了ffmpeg4android lib 视频压缩工作正常 但视频无法在除 safari 浏览器之外的浏览器中播放 上传到服务器后 我使用了以下命令 ffmpeg y i
  • 在 Mac 操作系统上使用 ffmpeg 录制视频

    我想在 mac OS 上使用 ffmpeg 以任何格式录制实时网络摄像头视频 我尝试了很多 但无法找到用于重新编码视频的命令 所以请任何人都可以告诉我 ffmpeg 命令用于使用 Mac 操作系统的网络摄像头捕获视频 提前致谢 对于 Mac

随机推荐

  • 如何在一行中将输入流重定向到输出流?

    我想做这个 cout lt lt cin 而不是这个 int x cin gt gt x cout lt
  • 整个计算机的文件观察器(替代方案?)

    我想编写一个应用程序来获取整个计算机上每个文件更改的事件 以在文件位置 权限和我的应用程序的数据库之间进行同步 我正在考虑使用 net filewatcher 类 但经过一些测试后我发现了以下限制 1 文件观察器有一个缓冲区 http ms
  • C 中的 String.indexOf 函数

    是否有 C 库函数可以返回字符串中字符的索引 到目前为止 我发现的只是像 strstr 这样的函数 它将返回找到的 char 而不是它在原始字符串中的位置 strstr返回指向找到的字符的指针 因此您可以使用指针算术 注意 此代码未测试其编
  • 找不到使用 sqlplus 控制台创建的目录

    我使用 SQLPlus 控制台创建了一个目录 但在文件系统上找不到它 这是我使用的命令 SQL gt create directory secfile as opt oracle Directory created 我查看了我的 Oracl
  • ModuleNotFoundError:没有名为“django.utils.six”的模块[重复]

    这个问题在这里已经有答案了 HTTP GET admin 500 0 00 127 0 0 1 51425 回溯 最近一次调用最后一次 文件 C Program Files x86 Microsoft Visual Studio Share
  • 在 UnhandledException 上显示消息对话框

    在我的应用程序中 我想在出现任何未处理的异常时显示消息对话框 但当抛出未处理的异常时 似乎没有出现对话框消息 显示消息弹出窗口是否有效 另外在 MSDN 文档中我没有找到太多相关信息 以下是我正在使用的测试代码 public App thi
  • 如何判断元素是否具有流体宽度[重复]

    这个问题在这里已经有答案了 可能的重复 使用 JavaScript 确定元素是否具有固定宽度或百分比宽度 https stackoverflow com questions 1782566 determine whether element
  • “InMemoryUploadedFile”对象没有属性“encode”

    我正在尝试在 Django 中发送一封带有附件的电子邮件 文件是request FILE file 对象 InMemoryUploadedFile 类型 我通过创建消息EmailMessage 然后附加文件message attach f
  • R 中的数据框和列表有什么区别?

    有什么区别数据框 and list in R 什么时候应该使用哪一个 哪个更容易循环 确切的问题 我必须首先存储 3 个字符串元素 如 a b c 稍后 对于其中的每一个 我都需要附加 3 个元素 例如 对于 a 我必须添加 a1 a2 a
  • 合并两个数据框,其中一列根据条件匹配

    模拟数据 set seed 1 df1 lt data frame country c US UK year c 2000 2003 df2 lt data frame country rep c US UK 10 year rep 200
  • java.lang.RuntimeException:无法实例化活动 ComponentInfo

    我试图运行示例代码 在 android 1 5 模拟器中启动应用程序时 我遇到了这些错误 有人有一些提示吗 来自 LogCat 的错误 01 13 02 28 08 392 ERROR AndroidRuntime 2888 FATAL E
  • Android JUnit 首选项测试

    一个相当正常的场景 Android 应用程序有一个首选项活动 从 ListPreference 中选择一个选项会触发代码来更改该 ListPreference 的摘要文本 即 从颜色 ListPreference 中选择 绿色 将通过以下方
  • 在 Python 3 中运行时更改 stdin / stdout 的编码

    在Python 3中 stdin and stdout是具有编码的 TextIOWrappers 因此会输出普通字符串 而不是字节 我可以更改与环境变量一起使用的编码Python编码 http docs python org py3k us
  • 无法运行已发布的 Blazor WebAssembly 应用程序

    当我在 Visual Studio 调试器中运行该应用程序时 它运行得很好 但如果我将其部署到服务器 我会在浏览器控制台中收到此错误 无法在资源 完整性 属性中找到有效的摘要http example com pwaexperiment ww
  • Azure AD - 检索本地 AD 组公用名

    我有一个应用程序需要根据其本地 AD 通用名称来过滤权限 几点注意事项 Azure AD Connect 正在 OnPrem AD 和 Azure 之间同步数据 我成功地将登录用户的组信息从 Azure Graph API 检索到 Web
  • 在 MySQL 中仅检索固定数量的行

    我正在负载下测试我的数据库设计 我只需要检索固定数量的行 5000 我可以指定 LIMIT 来实现此目的 但是查询似乎会构建所有匹配行的结果集 然后仅返回限制中指定的行数 是这样实施的吗 MySQL 是否可以读取一行 读取另一行 并在检索到
  • 如何让 Flexbox (flex-grow) 在调整大小时考虑内容?

    当两个元素都在使用时 如何让 Flexbox 停止平衡同级元素中的空间flex grow 1 这很难预先解释 因此这里是代码 后面是问题的示例屏幕截图以及所需的行为 Parent display flex flex direction co
  • 如何将 AMI 保存到 S3 存储桶?

    我已使用 Amazon AWS 控制台创建了 AMI EBS AMI 该 AMI 附加了 2 个快照 现在我想将该 AMI 备份到 S3 存储桶 这可能吗 实际上 我需要执行此操作 然后才能将该 AMI 移动到不同区域中的存储桶 并注册该
  • 在 JavaScript 中使用 RegEx 进行拆分

    假设我有一个通用字符串
  • 在关键帧之间剪切视频而不使用 ffmpeg 重新编码整个视频?

    我想在任何特定时间戳的开头剪切视频 并且需要precise 所以最近的关键帧不够好 另外 这些视频相当长 一个小时或更长时间 所以我想避免重新编码如果可能的话 将其全部重新编码 否则仅重新编码总持续时间的最小部分 因此 希望最大限度地利用