AVAssetImageGenerator - Создать миниатюру за 5 секунд
Кажется достаточно простым. Я просто хочу миниатюру с 5 секунд в видео:
AVURLAsset *asset1 = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:url] options:nil];
AVAssetImageGenerator *generate1 = [[AVAssetImageGenerator alloc] initWithAsset:asset1];
generate1.appliesPreferredTrackTransform = YES;
NSError *err = NULL;
Float64 seconds = 5;
int32_t preferredTimeScale = 30;
CMTime actualTime;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
CGImageRef oneRef = [generate1 copyCGImageAtTime:inTime actualTime:&actualTime error:&err];
Выход такой:
Printing description of actualTime:
(CMTime) actualTime = 83 1000ths of a second {
value = 83
timescale = 1000
flags = kCMTimeFlags_Valid
epoch = 0
}
Printing description of inTime:
(CMTime) inTime = 150 30ths of a second {
value = 150
timescale = 30
flags = kCMTimeFlags_Valid
epoch = 0
}
Почему actualTime
отличается от inTime
??? Как я могу получить изображение через 5 секунд в видео?
1 ответ
Попробуйте использовать запрашиваемый тайм-тайм- аут и затем запрашиваемый тайм- аут
generate1.requestedTimeToleranceBefore = kCMTimeZero
generate1.requestedTimeToleranceAfter = kCMTimeZero
var requiredTimeToleranceBefore: CMTime
Максимальный промежуток времени до запрошенного времени, за которое может быть сгенерировано изображение.
var requiredTimeToleranceAfter: CMTime
Максимальный промежуток времени после запрошенного времени, в течение которого изображение может быть сгенерировано.