制作将拍摄视频片段转换为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();
}
请帮帮我们......谢谢
答案 0 :(得分:1)
了解JMF(Java Media Framework)。你需要一些时间 学习基础知识。然后你就可以做到这一点。我没有一个代码 现在和我一起试样,但据我记得你必须创造玩家, 然后从中检索适当的“控制”,为您提供访问权限 到帧。
以下是开始的示例: http://khemsoi.blogspot.com/2006/03/jmf-frame-grabber.html