Создание видео с использованием массива изображений в iOS
Я пытаюсь создать видео из массива изображений.
Я создал видео, но у меня есть проблема во время презентации, т.е. CMTime
,
Я использую следующий код для создания видео
int frameCount = 1;
// Adding images here to buffer
for( int i = 0; i<[ fileArray count]; i++ )
{
// Create Pool
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *imageTag = [fileArray objectAtIndex:i];
// Create file path
NSString *imgPath = [folderPath stringByAppendingPathComponent:imageTag];
// Get image
UIImage *img = [self getImageFromPath:imgPath];
buffer = [self pixelBufferFromCGImage:[img CGImage] size:size];
BOOL append_ok = NO;
int j = 0;
// Try 5 times if append failes
while ( !append_ok && j < 30 )
{
if (adaptor.assetWriterInput.readyForMoreMediaData)
{
printf("appending %d attemp %d\n", frameCount, j);
NSTimeInterval duration = 7.0;
if ( [mArrAudioFileNames objectAtIndex:i] != [NSNull null] )
{
// Get Audio file
NSString *docsDir = [[self dataFolderPathForAudio]
stringByAppendingPathComponent:
[mArrAudioFileNames objectAtIndex:i]];
NSURL *soundFileURL = [NSURL fileURLWithPath:docsDir];
// Create AudioPlayer
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:soundFileURL
error:&error];
// Get Audio duration
duration = [audioPlayer duration];
[audioPlayer release];
}
CMTime frameTime = CMTimeMake(frameCount,(int32_t)1);
append_ok = [adaptor appendPixelBuffer:buffer
withPresentationTime:frameTime];
[NSThread sleepForTimeInterval:0.05];
}
else
{
printf("adaptor not ready %d, %d\n", frameCount, j);
[NSThread sleepForTimeInterval:0.1];
}
j++;
}
if (!append_ok) {
printf("error appending image %d times %d\n", frameCount, j);
isError = YES;
}
frameCount++;
CVBufferRelease(buffer);
// drain the pool
[pool drain];
}
[videoWriterInput markAsFinished];
[videoWriter finishWriting];
[videoWriterInput release];
[videoWriter release];
Это создает видео 7 секунд, если у меня есть 7 изображений в массиве. Это означает, что каждое изображение воспроизводится в течение 1 секунды.
Мой вопрос: как я могу сделать видео с тем же набором изображений (предположим, 7), где время показа каждого изображения в видео отличается?
Например, если первое изображение воспроизводится в течение 9 секунд от общей продолжительности видео, то второе изображение в течение 5 секунд и третье изображение в течение 20 секунд.
Заранее спасибо.