[xcode]写真を動画にする
毎度お世話になっております。
現在、株式会社エムディエヌコーポレーション社が出した『小学生・中学生でもできるiPhoneアプリ開発XcodeでつくるiOSアプリ』を参考にxcodeにて撮影した写真情報を動画にする作業をしています。
この会社が出しているMovieCreatorファイル(http://www.mdn.co.jp/di/book/3214303003/?page=2)をダウンロードし、ビルドをしたのですがこのダウンロードしたファイルにエラーが出てしまいました。
以下エラーです。(計3つ)
#import "MovieCreator.h"
@implementation MovieCreator
/*!
画像の配列から動画を生成する。
@param images 画像の配列
@param path 動画ファイルの出力先
*/
- (void)writeImagesAsMovie:(NSArray *)images toPath:(NSString *)path
{
NSFileManager *fileManager = [NSFileManager defaultManager];
// ファイルを削除する
[fileManager removeItemAtPath:path error:nil];
// 最初の画像から動画のサイズ指定する
CGSize size = ((UIImage *)images[0]).size;
(1)ここでProperty "size" cannot be found in forward class object "UIImage" というエラー
_videoWriter = [[AVAssetWriter alloc] initWithURL:[NSURL fileURLWithPath:path]
fileType:AVFileTypeQuickTimeMovie
error:nil];
NSDictionary *outputSettings =
@{
AVVideoCodecKey : AVVideoCodecH264,
AVVideoWidthKey : @(size.width),
AVVideoHeightKey : @(size.height),
};
AVAssetWriterInput *writerInput = [AVAssetWriterInput
assetWriterInputWithMediaType:AVMediaTypeVideo
outputSettings:outputSettings];
[_videoWriter addInput:writerInput];
AVAssetWriterInputPixelBufferAdaptor *adaptor = [AVAssetWriterInputPixelBufferAdaptor
assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput
sourcePixelBufferAttributes:nil];
[_videoWriter startWriting];
[_videoWriter startSessionAtSourceTime:kCMTimeZero];
CVPixelBufferRef buffer = NULL;
int frameCount = 0;
// 次の画像を表示する時間感覚の設定です。
// この数字を小さくすると、早く画像が変わるので滑らかに動きます。
// この数字を大きくすると、かくかくした動画になり、面白いです。
float durationForEachImage = 0.5;
int32_t fps = 24;
for (UIImage *image in images)
{
if (adaptor.assetWriterInput.readyForMoreMediaData)
{
CMTime frameTime = CMTimeMake((int64_t)frameCount * fps * durationForEachImage, fps);
buffer = [self pixelBufferFromCGImage:image.CGImage];
(2)ここでProperty "CGImage"cannot be found in forward class object "UIImage"というエラー
if (![adaptor appendPixelBuffer:buffer withPresentationTime:frameTime])
{
NSLog(@"Failed to append buffer. [image : %@]", image);
}
if(buffer) {
CVBufferRelease(buffer);
}
frameCount++;
[NSThread sleepForTimeInterval:0.05];
}
else
{
[NSThread sleepForTimeInterval:0.1];
}
}
// 動画生成終了
[writerInput markAsFinished];
[_videoWriter finishWritingWithCompletionHandler:^
{
NSLog(@"Finish writing!");
// 動画をカメラロールに保存する
UISaveVideoAtPathToSavedPhotosAlbum(path, self, nil, nil);
(3)ここでImplicit declaration of function "UISaveVideoAtPathToSavedPhotosAlbum"is invalid inC99
}];
ちなみにコードは先ほどのダウンロードページにあるchap5にあるAsagaoです。
おそらくこのMovieCreatorファイルのコードにミスがあると思うのですが、まだまだ素人のため解決策が全くわかりません。説明不足の点があれば申し訳ございません。どなたかご教授願います。
補足
イメージの切り替えアニメーションを使ってコーディングしましたが、、 違う方法もあれば教えてください! また、これだとNStimerは時刻を取得してその時間からタイマーが発動しますよね! 時間を12時きっかりにこの画像、13時ならこの画像ときりかえたいのですが、よろしければ教えていただけませんか?