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

Aub*_*rey 5 objective-c animated-gif avfoundation

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

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

我是相当新的,以目标C和有成功创建一个漂亮的自定义视频录像机,但现在我不鼓励这个下一条。

我有

第二视图控制器.h

@interface SecondViewController : UIViewController
@property NSURL *videoURL;
@end
Run Code Online (Sandbox Code Playgroud)

第二视图控制器.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];
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些事情

AVURL资产

AVAssetImageGenerator

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

Aub*_*rey 5

对此的答案是CVPixelBuffer在生成的视频上使用以获取图像资产并存入内存,然后将图像添加到存储的图像中NSDictionary并创建一个 gif。

如何使用CVPixelBuffer
如何将 CVPixelBuffer 变成 UIImage?

如何从字典中获取存储的图像并创建 gif:
通过 iOS 创建和导出动画 gif?