【发布时间】:2011-03-17 09:59:58
【问题描述】:
我需要获取视频文件的帧(它可能在 sdcard、缓存目录或应用程序目录上)。我在我的应用程序中有包 android.media,在里面我有类 MediaMetadataRetriever。要将第一帧放入位图中,我使用代码:
public static Bitmap getVideoFrame(Context context, Uri videoUri) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setMode(MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
retriever.setDataSource(context, videoUri);
return retriever.captureFrame();
} catch (IllegalArgumentException ex) {
throw new RuntimeException();
} catch (RuntimeException ex) {
throw new RuntimeException();
} finally {
retriever.release();
}
}
但这不起作用。当我设置数据源时,它会引发异常(java.lang.RuntimeException: setDataSource failed: status = 0x80000000)。你知道如何让这段代码工作吗?或者您有没有使用 ffmpeg 或其他外部库的类似(简单)解决方案? videoUri 是一个有效的 uri(媒体播放器可以从该 URI 播放视频)
【问题讨论】:
-
你的问题可以提供一个样本吗,我为这种样本尝试了很多,最后不得不问你。
标签: android video frame capture