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

一帧一帧播放视频

何修能
2023-03-14

我想让应用程序逐帧播放功能。我想这是不可能与标准的Android工具。我尝试了VideoView和search kTo(当前的1000/帧率)方法,但它不起作用(我想它不会在暂停的视频上寻找)。我的问题是:我需要学习和使用什么来使它成为可能,什么工具和/或库?我是Android初学者,我没有工作的视频渲染早,所以我的知识,这是真的很低。

共有1个答案

丘学海
2023-03-14

几年过去了,但问题仍然存在

关于这个主题的简短回顾:
假设你有一个压缩视频,比如mp4文件。你要求的是逐帧播放,但是由于压缩,帧实际上不存在(在这个维基上看看i、p和b帧)。所以Android需要为你生成这个帧。这一代可能远非最佳(在我的情况下,它跳过了大约3%的帧),并且可能在某些设备上不支持,因为使用了不同的编解码器。

如果你打算在上面运行一些Algo,我建议先提取帧,作为jpg图像,然后一个接一个地读取它们。

我从这里使用hiteshsondhi88的ffmpeg包装器来存档提取。它非常容易使用,工作顺利。

如果您仍然想使用纯Java,Fadden做了一件很棒的工作。这里有几个例子可以说明如何使用媒体编解码器和获取帧。

此外,我还为此编写了一个小示例,可以在我的Git存储库中找到

在另一个StackOverflow问题中也有关于它的讨论,但我还没有尝试过,要批准。

 类似资料:
  • 本文向大家介绍视频帧播放速度的单位?相关面试题,主要包含被问及视频帧播放速度的单位?时的应答技巧和注意事项,需要的朋友参考一下 PAL制式是——25fps,NTSC是——30fps。  

  • 问题内容: 我正在创建一个单页应用程序,后端使用Golang,前端使用javascript。我想找到一种方法,以使用Golang获取视频的第一帧。 首先,我将一个.mp4视频文件上传到服务器。它保存在服务器上。 有没有一种方法可以使用Golang获取此视频的第一帧?应该可以在前端使用Javascript来做到这一点,但我认为这不是解决此问题的正确方法。 我不知道如何使用Golang来实现它,也没有

  • 我的应用程序有一个片段,播放一秒钟长的视频。播放完视频后,用户必须按下一个按钮,然后应该播放一个新的视频。在播放第二个视频之前,my main activity加载、创建一个新片段并创建新的Exoplayer实例。 我第一次播放视频时,一切都按预期进行。然而,如果我想播放第二个视频,它将显示第一个视频最后一帧的冻结图像,并播放第二个视频的声音。这个bug不出现在Android8(API Level

  • 展示效果只有两三帧有变化,问题是什么呢?

  • Threejs提供了一系列用户编辑和播放关键帧动画的API,例如关键帧KeyframeTrack、剪辑AnimationClip、操作AnimationAction、混合器AnimationMixer。 为了让大家更好的理解关键帧动画,本节课不加载外部模型的帧动画数据,使用关键帧KeyframeTrack和剪辑AnimationClip编写一个关键帧动画,然后调用操作AnimationAction

  • 我正在尝试提取几个视频上的所有帧。这些视频是在以可变帧速率保存输出的摄像机上拍摄的,因此,一些帧在时间上比其他帧更接近(根据mediainfo,每秒27到30帧) 这些帧将与一些元数据同步,因此我不仅需要提取它们,还需要保留视频每帧拍摄的[相对]时间信息。 我一直在使用ffmpeg来提取视频帧,当视频帧速率不再恒定时,挑战就来了。任何其他不同于ffmpeg的方法或程序都可以完成任务。