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

Nas*_*kov 7 android

是否可以通过编程方式将录制的视频转换为Android中的GIF?你能帮我解决一些破解密码或告诉我怎么做吗?

Sam*_*Rad 11

我的建议是使用MediaMetadataRetriever和call 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);
Run Code Online (Sandbox Code Playgroud)

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

AnimationDrawable animatedGIF = new AnimationDrawable();

animationDrawable.addFrame("FIRST FRAME", 50);
animationDrawable.addFrame("SECOND FRAME", 50);
...
animationDrawable.addFrame("LAST FRAME ", 50); 
Run Code Online (Sandbox Code Playgroud)


Nik*_*ski 7

  1. ffmpeg在项目中导入,抓取部分或整个视频并将其转换为gif.

    要么

  2. 用于MediaRetriever通过范围内的简单循环提取帧范围,然后转换为Drawable或Bitmap,以便保存它.

    要么

  3. 从" 画布" SurfaceViewHolder或" SurfaceView画布" 播放视频时抓取帧.