iOS Определяет количество кадров в видео

Если у меня есть MPMoviePlayerController в Swift:

MPMoviePlayerController mp = MPMoviePlayerController(contentURL: url) 

Есть ли способ получить количество кадров в видео, расположенном по url ? Если нет, есть ли другой способ определить количество кадров?

Я не думаю, что MPMoviePlayerController может вам помочь.

Используйте AVAssetReader и подсчитайте количество возвращаемых вами CMSampleBuffer . Вы можете настроить его, чтобы даже не декодировать фреймы, эффективно анализируя файл, поэтому он должен быть быстрым и эффективным с точки зрения памяти.

Что-то вроде

  var asset = AVURLAsset(URL: url, options: nil) var reader = AVAssetReader(asset: asset, error: nil) var videoTrack = asset.tracksWithMediaType(AVMediaTypeVideo)[0] as! AVAssetTrack var readerOutput = AVAssetReaderTrackOutput(track: videoTrack, outputSettings: nil) // NB: nil, should give you raw frames reader.addOutput(readerOutput) reader.startReading() var nFrames = 0 while true { var sampleBuffer = readerOutput.copyNextSampleBuffer() if sampleBuffer == nil { break } nFrames++ } println("Num frames: \(nFrames)") 

Извините, если это не идиоматично, я не знаю быстро.

  • Область урожая отличается от выбранной области в iOS?
  • PHAsset fetchAssetsWithMediaType: PHAssetMediaTypeVideo не возвращает видео на iOS 10.2
  • PhoneGap iOS не может воспроизводить видео с помощью HTML 5
  • NetStream.Play.Failed с VideoTexture на iOS в приложении Adobe Air
  • Как потоковое видео через безопасное соединение на iOS
  • iOS 8 - Видео и звуковые файлы не будут воспроизводиться с домашнего веб-приложения
  • Ищите определенную позицию в AVPlayer сразу после загрузки актива
  • Запись пользовательского наложения на iPhone
  • Загрузите большие видео в Facebook с помощью iOS SDK
  • Событие Click / Tap не запускается в iframe на устройствах iOS
  • CVOpenGLESTextureCacheCreateTextureFromImage vs glTexImage2D
  • Давайте будем гением компьютера.