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

从视频中获取帧内

吕宸
2023-03-14

FFMpeg的工作速度要快得多,但仍然相当慢。

所以,我的问题是,如果有一个lib,我可以在其中执行类似以下伪代码的操作:

var frame = first_frame;
do
{
    if (frame.type == intra_frame) log(frame.time);
    frame = frame.next;
} while (frame != null);

快速扫描视频,不看帧内的任何东西,只看标题,以找到帧的类型,并继续下一帧。

ffmpeg -hide_banner -skip_frame nokey -i _a.mp4 -vf "select='eq(pict_type\,PICT_TYPE_I)*(lt(abs(t\-30)\,2)+lt(abs(t\-90)\,2)+lt(abs(t\-150)\,2)+lt(abs(t\-180)\,2)+lt(abs(t\-240)\,2)+lt(abs(t\-300)\,2)+lt(abs(t\-360)\,2)+lt(abs(t\-420)\,2))',showinfo,scale=640:480,tile=6x8" -vsync 0 frames.jpg

我发现如果我直接指定帧,我不会得到真正的速度差异。

除了通过API之外,FFMPEG还有什么更快的吗?

共有1个答案

经清野
2023-03-14

从一般意义上说,不,这样的自由贸易区是不存在的。但是如果你根据你处理的特定视频做假设,你可以近似地得到结果。FFmpeg不能为您做到这一点,因为它是一个通用框架

让我们从简单开始:

  • 您的视频是什么容器?
  • 他们使用什么编解码器?
 类似资料:
  • 我正在开发一个Android视频应用程序,我需要在暂停模式下获取当前显示的视频帧号。 我需要向我的服务器发送当前在视频中暂停的帧号,并返回关于该帧/时间的项目列表,现在我正在以毫秒为单位发送当前暂停的时间,但它不能很好地工作,因为服务器比较发送到它计算出具体的帧,基于时间,但有时比较并不精确。 我知道如果你使用MediaMetaDataRetriever,你可以从那个帧中得到一个位图,我做到了,但

  • 我正在尝试使用MediaCodec从视频中检索所有帧,用于图像处理,我正在尝试渲染视频并从outBuffers捕获帧,但我无法从接收到的字节启动位图实例。 我试着将它呈现为一个表面或无(null),因为我注意到当你呈现为null时,outBuffers将获得呈现帧的字节。 这是代码: 任何帮助都是非常有用的

  • 我使用这个库在我的Android应用程序中使用FFmpeg。我正在从视频中提取帧,然后将它们添加到裁剪查看器中。因此,每一帧都需要表示视频中的某个时间帧。下面是我当前提取帧的ffmpeg代码: 感谢任何帮助

  • 问题内容: 我想使用Java从视频文件(mov)中获取帧样本(jpeg)。是否有捷径可寻。当我在谷歌搜索时,我所能找到的就是从多个jpg中移动。我不知道也许找不到正确的关键字。 问题答案: Xuggler完成工作。他们甚至给出了完全符合我需要的示例代码。链接在下面 http://xuggle.googlecode.com/svn/trunk/java/xuggle- xuggler/src/com

  • 我会考虑不要将与其他解决方案一起使用以满足上述需求的建议。

  • 我如何从youtube频道获取持续时间和浏览量都很重要的视频? 我试过这个请求: https://www.googleapis.com/youtube/v3/search?part=snippet, id 但响应不包含持续时间/视图计数。有什么想法吗?谢谢。