Как получить время начала и окончания выбранных кадров из видео с помощью iOS SDK?
Что я пытаюсь сделать:
Я пытаюсь получить время начала и окончания фреймов, выбранных как в приложении ниже:
Что я сделал до сих пор:
- UIImagePickerController: Реализовано и установлено, что время начала и окончания не будет возвращено делегатом "didFinishPickingMediaWithInfo", если видеовход выбран из альбома. Подтверждено с командой Apple, тоже.
- Попробовал с "UIVideoEditorController" и, наконец, не смог получить время начала и окончания.
- Планирование попробовать с "AVAssetImageGenerator" генерировать миниатюры и программно обрабатывать "флешку или маркер", чтобы выбрать кадры вместе с AVPlayer для мгновенного предварительного просмотра, как в проигрывателе фильмов IOS (как в приложении). Но это довольно непросто и сложно и не уверен насчет скорости обработки.
Что я хочу знать:
- Помимо вышеупомянутых трех методов, есть ли другой способ иметь функциональность видео триммера? Какие-нибудь прямые API от Apple SDK?
- Кто-нибудь может дать ссылки или примеры кодов для видео триммера на основе AVAssetImageGenerator?
1 ответ
Если вы используете AVPlayer, вы можете получить время начала и окончания актива игрока, используя
self.player.currentItem.asset.duration;
Затем с помощью пользовательского ползунка выберите начальный и конечный кадры и преобразуйте значения относительно общей продолжительности, длины ползунка и значения из ползунка.
если у вас есть приблизительный период начала и окончания, действуйте следующим образом
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:player.currentItem.asset];
CGImageRef cgIm = [generator copyCGImageAtTime:player.currentTime
actualTime:&actualTime
error:&error];
UIImage *image = [UIImage imageWithCGImage:cgIm];