android - 如何以编程方式在android中将视频转换为gif

标签 android

<分区>

是否可以在 Android 中以编程方式将录制的视频转换为GIF? 你能帮我做一些截断的代码或者告诉我怎么做吗?

最佳答案

我的建议是使用 MediaMetadataRetriever并调用 getFrameAtTime() 方法来检索要提取的帧:

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

然后创建一个Drawable Animation以编程方式:

AnimationDrawable animatedGIF = new AnimationDrawable();

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

关于android - 如何以编程方式在android中将视频转换为gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16748074/

相关文章:

javascript - 使用js函数中的变量,并在其他函数中使用它

android - 如何使用 Angular 注入(inject) cordovaHTTP 插件

android - Getview 参数 "convertview"在新的 "position"参数上不为空

java - 在非 Activity java 类中使用 Android 的 Fused Location 提供程序,并在主 Activity 类中获取经度和纬度

android - 关于 'cordova platform add android' 命令的信息

java - 生成 ISO 8601 格式的昨天日期时间字符串

android - GLSurfaceView 隐藏了不需要的 ImageView

android - ScrollView 中的异常

android - Firebase——错误 : Program type already present: com. google.api.AuthProviderOrBuilder

android - RecyclerView 动画问题 Android Kotlin