Android 视频缩略图返回空值
我正在从存储在sd卡中的视频创建缩略图,在网格视图中显示缩略图及其名称。在网格视图的“选定项目”事件上,弹出一个对话框,询问x、y、右、底部位置,然后将其粘贴到主活动。我获取了视频文件,并尝试使用media store创建缩略图。我还将缩略图检索为位图,但位图为空。在网格视图中显示视频名称,我可以选择相应的缩略图,可以给出位置,也可以将缩略图设置为主要活动。问题是位图为空,并且位图图像未显示文本vie视频名称。有什么问题吗?我想不出来?能帮我吗?我的代码如下。提前谢谢Android 视频缩略图返回空值,android,Android,我正在从存储在sd卡中的视频创建缩略图,在网格视图中显示缩略图及其名称。在网格视图的“选定项目”事件上,弹出一个对话框,询问x、y、右、底部位置,然后将其粘贴到主活动。我获取了视频文件,并尝试使用media store创建缩略图。我还将缩略图检索为位图,但位图为空。在网格视图中显示视频名称,我可以选择相应的缩略图,可以给出位置,也可以将缩略图设置为主要活动。问题是位图为空,并且位图图像未显示文本vie视频名称。有什么问题吗?我想不出来?能帮我吗?我的代码如下。提前谢谢 if (f.i
if (f.isFile()) {
if (fName.endsWith(".mpg")
|| fName.endsWith(".mov")
|| fName.endsWith(".wmv")
|| fName.endsWith(".rm")
|| fName.endsWith(".mp4")) {
tv.setText(fName);
path = f.getAbsolutePath();
System.out.println("Video file path=>"+path);
thumb = ThumbnailUtils.createVideoThumbnail(f.getAbsolutePath(),MediaStore.Video.Thumbnails.MICRO_KIND);
if(thumb==null)
{
/**Every time it printing null**/
System.out.println("Thumb is null");
}
iv.setImageBitmap(thumb);
告诉我您的问题是否已解决。来自ThumbnailUtils.createVideoThumbnail文档:如果视频损坏或格式不受支持,则可能返回null
默认情况下,几乎所有支持的格式都是mp4和3gp。请参见此处:获取默认支持的媒体格式的完整列表。如果您从sd卡视频创建缩略图,则将创建ThumbnailUtils.createVideoThumbnail,否则请使用光标
.查看下面的答案链接,查看sd cardis的thumnails。有没有办法从.mov文件中获取缩略图??比如说wowza服务器上的视频?但在图库中我可以看到缩略图;-所以视频没有被破坏或者其他什么
Try this code. It is getting the thumbnail of videos from urls. instead of pass the path of sd card .it will help you . Dont forgot to add internet permission in manifest file.
public class VideoThumbnailActivity extends Activity {
public static final String Downloader = null;
static String uri1="http://daily3gp.com/vids/lucky_guy.3gp";
static String uri2="http://daily3gp.com/vids/reporter_hit_by_plane.3gp";
static String uri3="http://daily3gp.com/vids/motorcycle_wipesout_explodes.3gp";
static String uri4="http://commonsware.com/misc/test2.3gp";
public static String uri_array[]={uri1,uri2,uri3,uri4,uri1,uri2,uri3,uri4,uri1,uri2,uri3,uri4};
ImageView imageView;
String url;
Gallery ga1,ga2;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView)findViewById(R.id.imageView);
ga1 = (Gallery)findViewById(R.id.gallery1);
ga1.setAdapter(new ImageAdapter(getApplicationContext()));
imageView.setImageBitmap(ThumbnailUtils.createVideoThumbnail(uri_array[0], MediaStore.Video.Thumbnails.FULL_SCREEN_KIND));
//on click event on gallery
ga1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, final int position,long arg3) {
imageView.setImageBitmap(ThumbnailUtils.createVideoThumbnail(uri_array[position], MediaStore.Video.Thumbnails.FULL_SCREEN_KIND));
//on click event on imageview to play video
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
Intent intent = new Intent(getApplicationContext(),PlayActivity.class);
intent.putExtra("path",uri_array[position]);
startActivity(intent);
}
});
}
});
}
public class ImageAdapter extends BaseAdapter {
private Context ctx;
int imageBackground;
public ImageAdapter(Context c) {
ctx = c;
TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
ta.recycle();
}
@Override
public int getCount() {
return uri_array.length;
}
@Override
public Object getItem(int arg0) {
return arg0;
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View view, ViewGroup arg2) {
ImageView iv = new ImageView(ctx);
Bitmap curThumb = null;
curThumb = ThumbnailUtils.createVideoThumbnail(uri_array[position],MediaStore.Video.Thumbnails.FULL_SCREEN_KIND);
iv.setImageBitmap(curThumb);
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setLayoutParams(new Gallery.LayoutParams(150,120));
iv.setBackgroundResource(imageBackground);
return iv;
}
}