【问题标题】:How to convert video to gif in android programmatically [closed]如何以编程方式在android中将视频转换为gif [关闭]
【发布时间】:2013-05-25 09:12:50
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案1】:

    我的建议是使用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); 
    

    【讨论】:

    • 你能告诉我如何获取所有帧吗?它的循环是什么。stackoverflow.com/questions/22684347/…你能回答吗。
    • mmRetriever.setDataSource(myVideo.getAbsolutePath());总是崩溃
    • 为什么要创建新的MediaPlayer?有必要吗?
    • @Delagro,它似乎没有被使用。不知道我为什么这样做。很难说出我 4 年前在想什么。
    • 有效但速度很慢。完成这项工作后,我决定在云中创建 gif。
    【解决方案2】:
    1. 在您的项目中导入ffmpeg,抓取部分或整个视频并将其转换为 gif。

    2. 使用MediaRetriever 提取帧范围,只需在范围内循环,然后转换为可绘制或位图,以便您保存。

    3. 在视频播放时从SurfaceViewHolderSurfaceView 画布中抓取帧。

    【讨论】:

      猜你喜欢
      • 2016-11-23
      • 2010-10-04
      • 2013-02-09
      • 2017-12-07
      • 2016-02-02
      • 1970-01-01
      • 2011-10-12
      • 2012-01-18
      • 1970-01-01
      相关资源
      最近更新 更多