2010-07-18 58 views
0

我试图按here所述创建视频缩略图。 我也读过参考文献here在Android 2.0及更高版本中无法获得视频缩略图

在我的应用我第一次让用户选择一个视频:

startActivityForResult(new Intent(Intent.ACTION_GET_CONTENT).setType("video/*"), ACTIVITY_PICKVIDEO); 

然后,我决定与视频ID:

fileID = Integer.parseInt(contentUri.getLastPathSegment()); 

因此,视频content://media/external/video/media/5将有ID 5。

然后我尝试获取缩略图位图:

ContentResolver crThumb = getContentResolver(); 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 1; 
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, fileID, MediaStore.Video.Thumbnails.MICRO_KIND, options); 

没有异常抛出,但位图的宽度和高度为-1。 我不确定getThubnail()所需的ID实际上是我上面确定的ID。

有谁知道一个工作示例如何获取缩略图位图如果你有内容Uri?

有趣的是(也许是这样)当我试图用MediaStore.Video.Thumbnails.MINI_KIND作为缩略图尺寸时,我得到空,而当我尝试FULL_SCREEN_KIND时,得到IllegalArgumentException ("Unsupported kind: 2")

我在Android 2.1上使用摩托罗拉Milestone。

编辑: 我还试图获得与ID查询的BaseColumns._ID但它原来是相同的URI(在给出的例子中是_ID 5)。

回答

10

用于获取视频ID试试这个

String[] proj = { 
    MediaStore.Video.Media._ID, 
     MediaStore.Video.Media.DISPLAY_NAME, 
    MediaStore.Video.Media.DATA 
}; 
Cursor cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
            proj, MediaStore.Video.Media.DISPLAY_NAME+"=?",new String[] {"name.mp4"}, null); 
cursor.moveToFirst() 
fileid = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media._ID)); 

用于获取缩略图:

ContentResolver crThumb = getContentResolver(); 
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb,fileid, MediaStore.Video.Thumbnails.MICRO_KIND, options); 
iv2.setImageBitmap(curThumb); 

这里IV2是imageview的并且name.mp4将代表你的文件名

+0

@Manuel:使用此功能android.media.ThumbnailUtils.createVideoThumbnail(\t \t \t \t \t path,MediaStore.Video.T humbnails.MINI_KIND);这里的路径是使用这个文件路径,你可以得到特定的一个视频的缩略图 – 2011-03-14 10:31:37