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

查找PICT_TYPE_I关键帧后的ffmpeg转储视频的特定长度

章锦
2023-03-14

我有一个flv视频,想要转储视频的长度,比方说3s00:39之后的第一个关键帧PICT_TYPE_I相遇。我准备好了FFMPEG seeking的文档,并在这里引用

ffmpeg-ss 00:23:00-i mononoke.hime.mkv-frames:v1 out1.jpg

此示例将在电影开始后的第23分钟生成一个图像帧(OUT1.jpg)。将使用关键帧解析输入,这是非常快的。从FFMPEG2.1开始,当使用FFmpeg进行代码转换时(即不仅仅是流复制),-SS现在也是“帧精确”的,即使用作输入选项。可以使用-noaccreate_seek选项恢复以前的行为(只查找最近的前一个关键帧,即使不精确)。

所以我认为如果我使用这个命令(在-I之前放置-ss

ffmpeg -noaccurate_seek -ss 00:39 -i input.flv  -r 10 -s 720x400 -t 3.12 dump.flv

这应该转储最后3.12s并以00:39之后的第一个keyframe开始的视频,对吗?毕竟,这是我需要的。

共有1个答案

松增
2023-03-14

如果与音频无关,可以使用

ffmpeg -ss 39.00 -i in.flv -vf select='if(eq(pict_type,I),st(1,t),gt(t,ld(1)))',setpts=N/FRAME_RATE/TB -an -t 3.12 out.flv

在这里,选择过滤器丢弃在搜索点之后的第一个关键帧之前的所有帧。t值控制所选的总持续时间。

请注意,视频持续时间是量化的,即25 fps的视频可以有0.04秒的持续时间。

 类似资料:
  • crf 20是相当高的质量,接近100%,恢复的帧应该接近原始。视频播放器暂停帧显示足够的质量。(虽然我不能说它是否在关键帧上) ffmpeg版本信息:

  • 这将从到获取所有i帧。 但是我想做的是给出一个帧号列表,并让ffmpeg提取出与每个帧号最接近的关键帧。有没有一种方法可以用ffmpeg来实现这一点,或者我必须在libavcodec上编写自己的程序来实现这一点?

  • 我想要做的是在第三分钟提取“最近”的关键帧--因为通常情况下,我用当前成功的代码提取的帧不是关键帧,因此模糊。 我知道有一种方法可以提取FFMPEG中的所有关键帧,但是有没有一种方法可以提取视频中最接近特定时间的关键帧呢?

  • 我有两个视频文件,我想使用ffmpeg配置 initial.mp4视频: h264(高)(avc1/0x31637661), yuv420p(电视),720x720,1077 kb/s,15.98 fps,16 tbr,600 tbns,1200 tbc(默认) 结尾mp4视频:h264(高)(avc1/0x31637661),yuv420p(电视,bt470bg),720x720[SAR 1:1

  • 我编写了代码将几个音频文件与1个图像组合成WebM视频。(audio1与默认jpg结合,audio2与默认jpg结合等)。 问题是,在此之后,视频长度比音频长度长25秒(因此音频在视频结束前缩短25秒)。 有没有办法在音频的同时停止视频?这是我使用的代码(我启动一个BAT命令文件)

  • 它是一个后端API(由RubyonRails开发),iphone和android手机使用它上传视频。API正在将上传的视频转换为MP4格式。我在后端使用曲别针ffmpeg gem进行视频转换。以下是我使用的: 我面临的问题有: 当用户从Android手机上传视频时,它在Android手机上运行良好,但在iPhone上无法播放。当用户从iPhone上传视频时,会发生另一件奇怪的事情,视频上传后,它会