Контекст
Я имею дело с видеофайлами размером 1280x920, это их фактический размер в пикселях при отображении в QuickTime или даже при воспроизведении в моем AVPlayer.
У меня есть куча видео в папке, и мне нужно соединить их вместе на AVMutableComposition
и воспроизвести.
Мне также нужно для каждого видео извлечь последний кадр.
До сих пор я использовал AVAssetImageGenerator
для каждого отдельного AVAsset
, и это работало, независимо от того, использовал ли я generateCGImagesAsynchronously
или copyCGImage
.
Но я подумал, что будет эффективнее запускать generateCGImagesAsynchronously
на моем ассете композиции, поэтому у меня есть только один вызов, вместо того, чтобы зацикливаться на каждой исходной дорожке.
Вместо :
v-Get Frame
AVAsset1 |---------|
AVAsset2 |---------|
AVAsset3 |---------|
Я хочу делать :
v----------v----------v- Get Frames
AVMutableComposition: |---------||---------||---------|
Проблема
Вот актуальная проблема:
import AVKit
var video1URL = URL(fileReferenceLiteralResourceName: "video_bad.mp4") // One of my video file
let asset1 = AVAsset(url: video1URL)
let track1 = asset1.tracks(withMediaType: .video).first!
_ = track1.naturalSize // {w 4 h 3}
var video2URL = URL(fileReferenceLiteralResourceName: "video_ok.mp4") // Some mp4 I got from internet
let asset2 = AVAsset(url: video2URL)
let track2 = asset2.tracks(withMediaType: .video).first!
_ = track2.naturalSize // {w 1920 h 1080}
Вот фактический скриншот игровой площадки (которую вы можете скачать здесь а>):
А вот еще кое-что:
Посмотрите информацию о текущем масштабе в инспекторе QuickTime. Видео отображается просто отлично, но оно показано как действительно увеличенное (обратите внимание, что ни один пиксель не размыт или что-то в этом роде, это связано с некоторыми метаданными)
Видеофайл, с которым я работаю в QuickTime:
Видеофайл из Интернета:
Вопрос
- Какие метаданные представляет собой эта информация и как с ней обращаться?
- Почему на оригинальном треке он отличается от того, когда он наложен на другую композицию?
- Как я могу извлечь кадр из таких видео?