Создание диапазона времени для AVAssetExportSession

Мне было интересно, как сделать временной диапазон для AVAssetExportSession из меток времени, таких как:

NSTimeInterval start = [[NSDate date] timeIntervalSince1970];
NSTimeInterval end = [[NSDate date] timeIntervalSince1970];

Код, который я использую для своего сеанса экспорта, выглядит следующим образом:

AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];

exportSession.outputURL = videoURL;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
exportSession.timeRange = CMTimeRangeFromTimeToTime(start, end);

Спасибо за вашу помощь!


person user1273431    schedule 27.05.2012    source источник


Ответы (1)


Свойство timeRange в AVAssetExportSession позволяет выполнять частичный экспорт актива, указывая, с чего начать и какова продолжительность. Если не указано, будет экспортировано все видео, другими словами, оно начнется с нуля и экспортирует общую продолжительность.

И начало, и продолжительность должны быть выражены как CMTime.

Например, если вы хотите экспортировать первую половину актива:

CMTime half = CMTimeMultiplyByFloat64(exportSession.asset.duration, 0.5);
exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, half);

или вторая половина:

exportSession.timeRange = CMTimeRangeMake(half, half);

или 10 секунд в конце:

CMTime _10 = CMTimeMakeWithSeconds(10, 600);
CMTime tMinus10 = CMTimeSubtract(exportSession.asset.duration, _10);
exportSession.timeRange = CMTimeRangeMake(tMinus10, _10);

Прочтите CMTime справочник, чтобы узнать о других способах расчета точного времени, которое вам нужно.

person djromero    schedule 27.05.2012
comment
Большое спасибо за это! Все отсортировано. Единственное, что CMTimeMakeWithSeconds должно иметь два аргумента. Таким образом, второй аргумент просто должен быть предпочтительной шкалой времени. - person user1273431; 27.05.2012
comment
Упс, исправлено. Это происходит при написании кода в текстовой области без проверки синтаксиса в реальном времени :) - person djromero; 27.05.2012