Создание видео с использованием массива изображений в 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 секунд.

Заранее спасибо.

0 ответов

Другие вопросы по тегам