如何将7sec视频转换为Gif Android

时间:2014-08-21 12:15:21

标签: java android video ffmpeg

制作将拍摄视频片段转换为Gif的应用。我想知道是否有一个图书馆直接将视频转换为Android上的GIF动画。

我尝试提取视频的所有帧并将其编码为gif,但我只获得了视频的第一帧。我的代码如下:

         public static final int GIF_DELAY_BETWEEN_FRAMES = 100;  
         public static final float SPEED_RATIO = 1.1f; 

         Uri videoFileUri=Uri.parse(mOutputFile.toString());
        FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
        retriever.setDataSource(mOutputFile.getAbsolutePath());
         rev = new ArrayList<Bitmap>();
        MediaPlayer mp = MediaPlayer.create(RecorderActivity.this, videoFileUri);
         int millis = mp.getDuration();
         for(int i=1000000;i<millis*1000;i+=1000000){
            Bitmap bitmap =           retriever.getFrameAtTime(i,FFmpegMediaMetadataRetriever.OPTION_CLOSEST);
        rev.add(bitmap);

        }   

        FileOutputStream outStream = null;
        try{
            outStream = new FileOutputStream(Environment.getExternalStorageDirectory()+ "/test.gif");
            outStream.write(generateGIF());
            outStream.close();
         }catch(Exception e){
            e.printStackTrace();
         }


        public byte[] generateGIF() {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        AnimatedGifEncoder encoder = new AnimatedGifEncoder();
        encoder.setDelay((int)(GIF_DELAY_BETWEEN_FRAMES * (1 / SPEED_RATIO)));
        encoder.start(bos);
        for (Bitmap bitmap : rev) {
            encoder.addFrame(bitmap);
        }
        encoder.finish();
        return bos.toByteArray();
     }

请帮帮我们......谢谢

1 个答案:

答案 0 :(得分:1)

  

了解JMF(Java Media Framework)。你需要一些时间   学习基础知识。然后你就可以做到这一点。我没有一个代码   现在和我一起试样,但据我记得你必须创造玩家,   然后从中检索适当的“控制”,为您提供访问权限   到帧。

     

以下是开始的示例:   http://khemsoi.blogspot.com/2006/03/jmf-frame-grabber.html

FROM Lib/API for create small gif from video?