2013-05-25 6 views

Antwort

6
  1. Import ffmpeg Ergreife in deinem Projekt den Teil oder das gesamte Video und wandle es in gif um.

    oder

  2. Verwenden MediaRetriever zu extrahieren Reihe von Bildern mit einfachen durch den Bereich Looping und dann drawable oder Bitmap konvertieren, so dass Sie sie speichern können.

    oder

  3. Besorgen Sie sich den Rahmen, während das Video von der SurfaceViewHolder oder SurfaceView Leinwand spielt.

9

Mein Rat wäre, MediaMetadataRetriever zu verwenden und getFrameAtTime() Methode aufrufen, um die Bilder, die Sie extrahieren möchten abzurufen:

// Get your video file 
File myVideo = new File 
     (Environment.getExternalStorageDirectory().getAbsolutePath(), 
                   "YOUR_FILE.mp4"); 
// URI to your video file 
Uri myVideoUri = Uri.parse(myVideo.toString()); 

// MediaMetadataRetriever instance 
MediaMetadataRetriever mmRetriever = new MediaMetadataRetriever(); 
mmRetriever.setDataSource(myVideo.getAbsolutePath()); 

// Array list to hold your frames 
ArrayList<Bitmap> frames = new ArrayList<Bitmap>(); 

//Create a new Media Player 
MediaPlayer mp = MediaPlayer.create(getBaseContext(), myVideoUri); 

// Some kind of iteration to retrieve the frames and add it to Array list 
Bitmap bitmap = mmRetriever.getFrameAtTime(TIME IN MICROSECONDS); 
frames.add(bitmap); 

und erstellen Sie eine Drawable Animation programmatisch:

AnimationDrawable animatedGIF = new AnimationDrawable(); 

animationDrawable.addFrame("FIRST FRAME", 50); 
animationDrawable.addFrame("SECOND FRAME", 50); 
... 
animationDrawable.addFrame("LAST FRAME ", 50); 
+0

Können Sie mir sagen, wie Sie alle Bilder bekommen. was wird die Schleife dafür sein. http://stackoverflow.com/questions/22684347/extract-all-video-frames-in-android kannst du bitte antworten. –

+0

mmRetriever.setDataSource (myVideo.getAbsolutePath()); stürzt immer ab –

+0

Warum erstellen Sie einen neuen MediaPlayer? Ist es nötig? –

Verwandte Themen