2012-11-09 10 views
6

Ich erstelle Thumbnails von Videos, die auf meiner SD-Karte gespeichert sind, zeige Thumbnails und ihre Namen in der Rasteransicht an. Auf Objekt ausgewähltes Ereignis der Rasteransicht öffnet einen Dialog und fragt x, y, rechts, untere Positionen und fügt sie dann in die Hauptaktivität ein. Ich habe die Videodateien und versuchte, Thumbnail mit Media Store zu erstellen, auch Thumbnail als Bitmap abrufen, aber die Bitmap ist null. In der Rasteransicht werden Videonamen angezeigt und ich kann das entsprechende Thumbnail auswählen und kann auch Positionen festlegen, die das Thumbnail auf die Hauptaktivität festlegen. Das Problem besteht darin, dass die Bitmap null ist und das Bitmap-Bild nicht angezeigt wird (Text wird im Video angezeigt). Was ist das Problem ? Ich kann es nicht herausfinden? Bitte hilf mir? Mein Code ist unten angegeben. Danke im Voraus.Video thumbnail return null

 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); 

Antwort

3

Von ThumbnailUtils.createVideoThumbnail Dokumentation: May return null if the video is corrupt or the format is not supported.

standardmäßig fast alle unterstützten Formate sind MP4 und 3GP. Siehe hier: http://developer.android.com/guide/appendix/media-formats.html für eine vollständige Liste der standardmäßig unterstützten Medienformate.

+0

gibt es eine Möglichkeit, ein Thumbnail von .mov-Dateien zu erhalten ?? sagen zum Beispiel ein Video auf dem Wowza-Server? –

+0

Aber in der Galerie kann ich die Thumbnails sehen; - (Also ist das Video nicht beschädigt oder was auch immer –

-1
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; 
      } 
     } 

lassen Sie mich wissen, dass Ihr Problem oder nicht behoben ist.

+0

möchte ich Thumbnails von sdcard .. sowieso lassen Sie mich überprüfen ... – Sunny

+0

Check die unten Antwort Link für thumnails von SD-Karte –

+0

mich ok lassen prüfen .. – Sunny

1

Wenn Sie Thumbnail aus SD-Karte Video erstellen würde dies erstellen ThumbnailUtils.createVideoThumbnail sonst verwenden Sie einen Cursor.

See this example.

Verwandte Themen