3

首先,感谢这个论坛在我的第一个应用程序(SwatchMatic)上为我(作为一个长期的潜伏者)提供了如此多的帮助。我现在正在为我的第二次努力尝试一些事情,而且,这是我第一次提出一个问题。

正如本论坛其他地方所指出的那样,不能指望 MediaDataRetriever 以细粒度的步骤从视频中检索位图,即使使用微秒并且即使使用 OPTION CLOSET (获取所有帧,而不仅仅是关键/同步帧) .

所以,像这样的东西,会返回许多重复的帧——一个而不是你期望一秒钟的视频大约 30 帧(无论如何在我的三星测试设备上——而且三星发行版在提供所有帧方面似乎更差比我在其他论坛上读到的其他制造商的产品)。

for (int i = 0; i < 1000000 ; i = i + (1000000/30)){
    Bitmap myBitmap = retriever.getFrameAtTime(i, android.media.MediaMetadataRetriever.OPTION_CLOSEST);
    ...
    }

典型的答案是使用 ffmpeg,但这是一个臃肿的解决方案,无法获得我需要的非常有限的功能(来自 mpeg-4 编码的 vido 的一些 30-60 的位图序列),它让我不得不分发LGPL 代码与我的应用程序等。

我也在这个论坛上读到过,没有简单的方法可以从 VideoView(这是 SurfaceView 的一个小玩意)中取出帧。谷歌的一些员工居然在这里回复了这个大意。

但是 ThumbnailUtils 的 createVideoThumbnail 方法呢?我可以接受它可以提供的 MINI_KIND 分辨率,但它似乎只提供剪辑的中间帧(时间方面)。是否可以以某种方式覆盖/扩展以在特定时间创建帧?

4

0 回答 0