如何使用AVFoundation将视频转换为动画gif?

时间:2014-03-14 11:49:41

标签: objective-c avfoundation animated-gif

在使用AVFoundation和AVCamRecorder录制电影后,我正在推新的UIViewController。

目前我正在从保存电影的网址播放电影,而且工作正常。我在理解如何将视频从URL转换为GIF动画时遇到了很多麻烦。

我对Objective C非常新并成功创建了一个漂亮的自定义视频录像机,但现在对此下一篇文章感到气馁。

我有

SecondViewController.h

@interface SecondViewController : UIViewController
@property NSURL *videoURL;
@end

SecondViewController.m

#import "SecondViewController.h"
#import "FirstViewController.h"
#import "CaptureManager.h"
#import "AVCamRecorder.h"
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>

@interface SecondViewController ()

@property (nonatomic, strong) CaptureManager *grabFile;
@property (nonatomic, strong) MPMoviePlayerController *movie;

@end

@implementation SecondViewController

- (void)viewDidLoad
{
self.movie = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL];
    _movie.view.frame = CGRectMake(0.0, 64.0, 320.0, 320.0);
    _movie.movieSourceType = MPMovieSourceTypeFile;
    _movie.repeatMode = MPMovieRepeatModeOne;
    [self.view addSubview:_movie.view];
    [_movie play];
}

我用

尝试了一些事情
  

AVURLAsset

  

AVAssetImageGenerator

但是我无法输出任何东西。我想知道步骤,如果可能的话,有关如何将帧提取为动画gif的示例位。感谢您阅读我的问题! :)

1 个答案:

答案 0 :(得分:3)

答案是在生成的视频上使用CVPixelBuffer将图像资源输出到内存中,然后将图像添加到NSDictionary并从存储的图像中创建gif。

如何使用CVPixelBuffer
How to turn a CVPixelBuffer into a UIImage?

如何从字典中获取存储的图像并创建一个gif:
Create and and export an animated gif via iOS?