Код: Выделить всё
var config = PHPickerConfiguration(photoLibrary: .shared())
config.selectionLimit = 1
config.filter = PHPickerFilter.any(of: [.videos])
config.preferredAssetRepresentationMode = .current
let phPickerVC = PHPickerViewController(configuration: config)
phPickerVC.delegate = self
// present
Код: Выделить всё
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
guard let result = results.first else {
return
}
result.itemProvider.loadFileRepresentation(forTypeIdentifier: UTType.movie.identifier) { url, error in
guard let url, error == nil else {
print(error)
return
}
// process video
}
}
Если я печатаю result.itemProvider.registeredTypeIdentifiers, он на самом деле сообщает «public.jpeg», поэтому имеет смысл, что он не может загрузиться это, но не имеет смысла, чтобы это был jpeg, потому что это, безусловно, видео, оно появляется в средстве выбора фотографий с видеофильтром, если долго нажимать на него в средстве выбора фотографий, начинается воспроизведение видео и т. д. Видео на самом деле это запись экрана iPhone, но я также могу записывать с экрана и использовать эти видео.
Что еще более странно, так это то, что другие приложения, которые, как я могу подтвердить, используют стандартный PHPickerViewController, который может загрузить видео. Я также пробовал использовать UIImagePickerViewController, который возвращает URL-адрес элемента, даже с расширением .mov, но затем попытка что-либо с ним сделать не удалась. Например, Error Domain=AVFoundationErrorDomain Code=-11838 «Операция остановлена» UserInfo={NSLocalizedFailureReason=Операция не поддерживается для этого носителя., NSLocalizedDescription=Операция остановлена, NSUnderlyingError=0x600000c06ca0 {Error Domain=NSOSStatusErrorDomain Code=-16976 "(null) )"}}.
Как загрузить это видео? Это происходит и на симуляторе, и на устройстве.
Подробнее здесь: https://stackoverflow.com/questions/784 ... controller