【发布时间】:2013-07-19 10:32:56
【问题描述】:
我正在尝试获取视频的一帧,因此我正在使用 MediaMetadataRetriever.getFrameAtTime(),如下所示:
Uri directorio = Uri.parse("android.resource://com.extremeye/" + R.raw.video);
media = new MediaMetadataRetriever();
media.setDataSource(this, directorio);
frame = (ImageView)findViewById(R.id.frame);
Bitmap bmFrame = media.getFrameAtTime();
frame.setImageBitmap(bmFrame);
但问题是我得到了:
MediaMetadataRetriever getFrameAtTime: videoframe 是一个空指针
在 logCat 中。
我确信该视频与 android 操作系统兼容并且 MediaMetadataRetriever 会加载它,因为我可以在 2.3.3 操作系统版本中毫无问题地获取其元数据描述。
我不知道为什么我无法获得框架,但如果我使用 4.2 操作系统版本,它可以完美运行。我试图更改视频的编解码器和格式,但它不起作用......我想这是格式兼容性的问题,但我不知道我能做什么......
谢谢!!
【问题讨论】:
-
同样疯狂的事情。我下载了一个视频转换器,并确保视频与 H.246 编解码器兼容,但我仍然得到空指针。
-
(Veo que eres español así que te Competitiono en español mejor jajaja) Esta clase funciona realmente mal, creo que el fallo ocurre dependiendo del punto exacto del vídeo del cual quieres extraer el frame。 A parte de este fallo también está el de compatibilidad con formatos, no funciona con la Api 10... Al final encontré una libreria externa que funciona genial:github.com/wseemann/FFmpegMediaMetadataRetriever。 Me costó un poco añadirla a mi proyecto pero creo que ya está solucionado。 Pruébala porque a mi me ha salvado... Ya me dirás cómo te va!!
-
感谢贡萨洛!!我会尝试添加这个库。
标签: android frame media null-pointer