【发布时间】:2014-08-21 20:18:30
【问题描述】:
我正在制作一个将拍摄的视频剪辑转换为 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();
}
请帮帮我...谢谢
【问题讨论】: