iOS: получите видео продолжительность и уменьшенные изображения, не играя видео

Я должен получить продолжительность (местного) видео, и затем получить доступ к его отдельным структурам как UIImage s. До сих пор я использовал MPMoviePlayerController для этого.

Сначала я регистрирую для MPMovieDurationAvailableNotification события, и затем звоню prepareToPlay . Когда событие получено, я отмечаю продолжительность видео, и затем я прошу структуры с помощью requestThumbnailImagesAtTimes .

Это работает, однако видео, кажется, начинает играть, даже если я не добавил это к представлению ни в каком случае (я могу услышать, что аудио играет в фоновом режиме).

Там какой-либо путь состоит в том, чтобы получить продолжительность видео и развивается, на самом деле не играя видео?

20
Если вы храните свое видео в файловой системе тогда, можно получить доступ к нему как AVAsset assetWithUrl: и у возвращенного AVAsset есть собственность продолжительности. Не уверенный в уменьшенных изображениях все же.
добавлено автор geraldWilliam, источник
Любые предложения на этой проблеме: stackoverflow.com/questions/47617130/…
добавлено автор Anand Gautam, источник

3 ответы

Получить продолжительность:

NSURL *sourceMovieURL = [NSURL fileURLWithPath:somePath];
AVURLAsset *sourceAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil];
CMTime duration = sourceAsset.duration;

Получить framegrab:

AVAssetImageGenerator* generator = [AVAssetImageGenerator assetImageGeneratorWithAsset:destinationAsset];

//Get the 1st frame 3 seconds in
int frameTimeStart = 3;
int frameLocation = 1;

//Snatch a frame
CGImageRef frameRef = [generator copyCGImageAtTime:CMTimeMake(frameTimeStart,frameLocation) actualTime:nil error:nil];
36
добавлено
Что такое frameTime? Я вижу frameTimeStart, который, как предполагается, является frameTime?
добавлено автор etayluz, источник
Это действительно получает продолжительность правильно, спасибо. Однако, "захват структура" выбор времени, кажется, немного выключен. Я должен был использовать CMTimeMakeWithSeconds (offsetInSeconds, 600).
добавлено автор George Armhold, источник
Хорошая выгода @etayluz
добавлено автор Shizam, источник

Можно войти быстрый как это

func getMediaDuration(url: NSURL!) -> Float64{
    let asset : AVURLAsset = AVURLAsset(URL: url) as AVURLAsset
    let duration : CMTime = asset.duration
    return CMTimeGetSeconds(duration)
}
8
добавлено
Пожалуйста, проверьте это: stackoverflow.com/questions/47617130/…
добавлено автор Anand Gautam, источник

Запрос setShouldAutoPlay:NO добивается цели с MPMoviePlayerController:

 moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL: movieURL];
[moviePlayerController setShouldAutoplay:NO];   
[moviePlayerController prepareToPlay];

Править: Я получаю downvoted без объяснения, но я поддержу этот ответ. Если необходимо использовать MPMoviePlayerController тогда, это предотвратит автоигру СМИ, и все же позволит вам получать продолжительность и уменьшенные изображения согласно моему оригинальному вопросу.

6
добавлено
Делает кто-либо еще согласовывает это it' s довольно глупый иметь набор автоигры к ИСТИННОМУ как дефолт?
добавлено автор sunny, источник
Ваш ответ действительно, мм, отвечает на вопрос; но я предположил бы you' ре, снижающееся, голосовало потому что что you' ре, делающее с , MPMoviePlayerController является ужасной работой, которая возможно использует больше ресурсов, чем необходимый, чтобы получить информацию, которую вы хотите, и может прервать будущие выпуски iOS. You' ре, просящее, чтобы система загрузила к памяти и подготовилась играть видео, когда все вам нужно, является некоторыми метаданными об этом. Вне темы: только из любопытства, это показывает вам, кто вниз проголосовал за вас? I' ve, на который никогда снижаются проголосовавший так I' m любопытный.
добавлено автор Velociround, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.