当前位置: 首页 > 知识库问答 >
问题:

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

仉梓
2023-03-14

我想在任何特定的时间戳开始剪切一个视频,它需要精确,所以最近的关键帧是不够好的。

而且,这些视频相当长--一个小时或更长--所以如果可能的话,我希望避免重新编码,或者只重新编码总时长的一小部分。因此,希望最大限度地使用-vcodec copy

如何使用ffmpeg来完成此操作?

注意:请参阅“场景”,以及下面我自己的一个可能解决方案的粗略想法。

场景:

  • 原始视频
    • 长度1:00:00
    • 每10秒有一个关键帧
    • 从0:01:35一直到结束
    • 使用-ss 0:01:35-i blah.mp4-vcodec copy,文件的结果是什么,其中:
    • 音频从0:01:30开始
    • 视频也从0:01:30开始
    • 这将过早启动音频和视频
    • 音频从0:01:35开始,
    • 但视频前5秒为空白/黑色,
      • 直到0:01:40,视频开始

      粗略的想法

      • (1)将0:01:30改为0:01:40
        • 重新编码以获得新的关键帧,包括目标时间0:01:35
        • 然后将其剪掉,以获得从0:01:35到0:01:40的5秒
        • 不重新编码,使用-vcodec copy

        我知道/能算出(2)和(3)的命令,但不确定(1)需要什么命令。

共有1个答案

郗缪文
2023-03-14

列出关键帧的时间戳:

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,然后流式复制剩余部分。最接近的以下关键帧是6.131。

将5重新编码为6.131。确保输入和输出的属性和格式匹配。对于MP4,默认设置应该完成大部分工作,假设是H.264/AAC,但您可能必须手动匹配配置文件。

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

为concat Demuxer设置input.txt:

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

串联:

ffmpeg -f concat -i input.mp4 -c copy output.mp4
 类似资料:
  • 进入视频页面,在视频列表-操作,点击剪切 按钮 弹出视频剪切操作界面 1)选择保留片段 根据剪切需求,点击“设为开始时间”和“设为结束时间”确定视频分段的开始时间及结束时间;若需要多段视频,可以分别设置每段视频的起始时间。 2)命名剪切后视频名称 3)选择分类 4)可以预览视频剪切任务 5)确认剪切后,点击提交任务。 任务添加后可在视频页面,点击剪辑管理 查看视频剪切任务进度 视频剪切完后,可在视

  • 我正在使用ffmpeg将一个视频在给定的时间精确地剪切到另一个时间。我知道,我们可以简单地重新编码,但会失去质量。此外,我不想使用复制选项,因为关键帧问题(即,视频不会被准确剪切)。这些是我使用的命令。

  • 我已经创建了一个媒体播放器,它在表面视图上播放视频。视频完成后,视频的最后一帧仍保留在表面上。我想从表面移除视频帧,因为经过一些延迟后,另一个视频开始。 谁能帮助解决这个问题。 谢谢山贾因

  • 我正在尝试使用ffmpeg逐帧编写视频,如下所述:http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/ 然而,我总是得到一个OSError:[Errno 22]无效参数。我在Windows7上使用Python 3.4。代码如下: 任何帮助都非常感谢。 编辑:根据此处的要求

  • 如果我尝试对其运行第一个命令行,则输出视频将给出一个错误。 所有的反馈赞赏缩短一个视频,然后添加结尾。 干杯!瑞安

  • 我有每个长度约25分钟的视频,我希望使用python从一开始就缩短几秒钟。 在搜索时,我偶然发现了python的moviepy包。问题是,即使是一个视频也会占用很多时间。下面是我用来从一个视频的开头缩短7秒的代码片段。写入过程消耗大量时间。有没有更好的方法可以使用python剪切视频? 如果我遗漏了任何细节,请告诉我。 非常感谢您的帮助。谢谢