Doesn't gets frame from video in android 3.2.1 using MediaMetadataRetriever
I trying to get thumbnail from video using MediaMetadataRetriever class :
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource("/mnt/sdcard/test.ts");
Bitmap thumbnail = retriever.getFrameAtTime();
ivThumbnail.setImageBitmap(thumbnail);
} catch (Exception ex) {
ex.printStackTrace();
}
But all I get in my log:
E/MediaMetadataRetrieverJNI﹕ getFrameAtTime: videoFrame is a NULL pointer
But the documentation (http://developer.android.com/guide/appendix/media-formats.html) says that this format supported in android 3.0+
For now this code works for .mp4 files. Any suggestions?
This may help
get the video uri, and call this method..
public void setVideoThumbnail(Uri uri) {
String[] projection = { BaseColumns._ID, MediaColumns.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndexOrThrow(BaseColumns._ID);
int id = cursor.getInt(columnIndex);
ContentResolver crThumb = getContentResolver();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
Bitmap thumbnail= MediaStore.Video.Thumbnails.getThumbnail(crThumb, id,
MediaStore.Video.Thumbnails.MICRO_KIND, options);
ivThumbnail.setScaleType(ScaleType.CENTER_CROP);
ivThumbnail.setImageBitmap(thumbnail);
}
Try to extract the frame of the video with this external library. It works on API 7 and doesn´t fails so many times than the MediaMetadataRetriever class. It should be very easy to add into your project...
Hope it´s useful
I had the same error.
Check if you can extract meta data information from the video via ExtractMetadata
. If not, there might be something wrong with the setDataSource()
call or the video is in a wrong format/codec.
This code works for me.
AssetFileDescriptor afd=getAssets().openFd("t.mp4");
mediaMetadataRetriever.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
I had to provide afd.getStartOffset()
and afd.getLength()
Maybe it helps you get on the right track.
链接地址: http://www.djcxy.com/p/84040.html